我怎样才能让这种东西起作用?我可以检查是否,(obj instanceof List<?>)但不是(obj instanceof List<MyType>).有没有办法可以做到这一点?
我认为java擦除会在编译时擦除泛型类型,但是当我自己测试它时,我意识到在Bytecode中有一些关于泛型类型的信息.
这是我的测试:
我写了2节课:
import java.util.*;
public class Test {
List integerList;
}
Run Code Online (Sandbox Code Playgroud)
和
import java.util.*;
public class Test {
List<Integer> integerList;
}
Run Code Online (Sandbox Code Playgroud)
我编译了这两个类和泛型类中的某个地方,我看到了这一行
integerList{blah blah}Ljava/util/List;{blah blah}
Signature{blah blah}%Ljava/util/List<Ljava/lang/Integer;>;{blah blah}<init>
Run Code Online (Sandbox Code Playgroud)
在非泛型类中:
integerList{blah blah}Ljava/util/List;{blah blah}<init>
Run Code Online (Sandbox Code Playgroud)
所以显然我在字节码里面有通用信息所以这个擦除的东西是什么?