Get generic type of class at runtime

后端 未结 26 2598
野的像风
野的像风 2020-11-21 04:40

How can I achieve this?

public class GenericClass
{
    public Type getMyType()
    {
        //How do I return the type of T?
    }
}
26条回答
  •  粉色の甜心
    2020-11-21 05:04

    I dont think you can, Java uses type erasure when compiling so your code is compatible with applications and libraries that were created pre-generics.

    From the Oracle Docs:

    Type Erasure

    Generics were introduced to the Java language to provide tighter type checks at compile time and to support generic programming. To implement generics, the Java compiler applies type erasure to:

    Replace all type parameters in generic types with their bounds or Object if the type parameters are unbounded. The produced bytecode, therefore, contains only ordinary classes, interfaces, and methods. Insert type casts if necessary to preserve type safety. Generate bridge methods to preserve polymorphism in extended generic types. Type erasure ensures that no new classes are created for parameterized types; consequently, generics incur no runtime overhead.

    http://docs.oracle.com/javase/tutorial/java/generics/erasure.html

提交回复
热议问题