java 方法泛型instanceof
时间: 2023-10-29 21:53:20 浏览: 107
在 Java 中,由于类型擦除的特性,不能直接使用 `instanceof` 运算符来判断泛型类型。因为在运行时,泛型类型参数会被擦除,无法获取具体的泛型类型信息。
但是,你可以通过其他方式来实现类似的功能。一种常见的方法是,在方法中传递一个 `Class` 对象作为参数,然后使用 `isAssignableFrom` 方法来判断泛型类型。
下面是一个示例代码:
```java
public class Test {
public static <T> void testMethod(T obj, Class<T> clazz) {
if (clazz.isAssignableFrom(obj.getClass())) {
System.out.println("obj 是 " + clazz.getName() + " 类型");
} else {
System.out.println("obj 不是 " + clazz.getName() + " 类型");
}
}
public static void main(String[] args) {
String str = "Hello";
Integer num = 123;
testMethod(str, String.class); // obj 是 java.lang.String 类型
testMethod(num, String.class); // obj 不是 java.lang.String 类型
}
}
```
在上面的示例中,`testMethod` 方法接受一个泛型对象 `obj` 和一个 `Class<T>` 对象 `clazz`。通过使用 `isAssignableFrom` 方法,可以判断 `obj` 的实际类型是否是 `clazz` 指定的类型或其子类。
请注意,这种方法仍然有限制,因为它只能在运行时进行类型检查。在编译时无法进行静态类型检查。
阅读全文