som*_*guy 33 java generics instanceof
有没有办法找到泛型的类型?
if (T instanceof String) {
// do something...
}
Run Code Online (Sandbox Code Playgroud)
以上绝对不会编译.
Pet*_*rey 47
泛型是一个编译时功能.泛型在编译时添加检查,这在运行时可能没有任何意义.这是一个例子.您只能检查引用的对象的类型,这可能是代码中的超类型.如果要传递类型T,则必须明确地执行此操作.
void someMethod(Class<T> tClass) {
if(String.class.isAssignableFrom(tClass))
Run Code Online (Sandbox Code Playgroud)
要么
void someMethod(Class<T> tClass, T tArg) {
Run Code Online (Sandbox Code Playgroud)
注意:类型可能不一样,
someMethod(Number.class, 1);
Run Code Online (Sandbox Code Playgroud)
它不会编译,因为 T 不是变量,而是在运行时定义的类的占位符。这是一个快速示例:
public class Test<T> {
public void something(T arg) {
if (arg instanceof String) {
System.out.println("Woot!");
}
}
public static void main(String[] args) {
Test<String> t = new Test<String>();
t.something("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44213 次 |
最近记录: |