Java:Generic 的实例
2022-09-01 02:35:00
难道没有办法找到泛型的类类型吗?
if (T instanceof String) {
// do something...
}
以上绝对不能编译。
难道没有办法找到泛型的类类型吗?
if (T instanceof String) {
// do something...
}
以上绝对不能编译。
泛型是一种编译时功能。泛型在编译时添加检查,这在运行时可能没有任何意义。这是一个例子。您只能检查引用的对象的类型,该对象在代码中可能是超类型。如果要传递类型 T,请显式执行此操作。
void someMethod(Class<T> tClass) {
if(String.class.isAssignableFrom(tClass))
或
void someMethod(Class<T> tClass, T tArg) {
注意:类型可能不相同,
someMethod(Number.class, 1);
它不会编译,因为 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");
}
}