How do I get a class instance of generic type T?

前端 未结 22 1256
猫巷女王i
猫巷女王i 2020-11-21 11:03

I have a generics class, Foo. In a method of Foo, I want to get the class instance of type T, but I just can\'t call T.

22条回答
  •  长情又很酷
    2020-11-21 11:52

    This question is old, but now the best is use google Gson.

    An example to get custom viewModel.

    Class> clazz = new GenericClass>().getRawType();
    CustomViewModel viewModel = viewModelProvider.get(clazz);
    

    Generic type class

    class GenericClass(private val rawType: Class<*>) {
    
        constructor():this(`$Gson$Types`.getRawType(object : TypeToken() {}.getType()))
    
        fun getRawType(): Class {
            return rawType as Class
        }
    }
    

提交回复
热议问题