java instanceof :一个类型判断的java保留字,不知道是不是关键字,类似javascript 中的typeof
格式: 左边 instanceof 右边;
解释:如果左边的类型等于右边的类型返回true,否则返回false;
实例: System.out.println((new String()) instanceof String); 即返回true
泛型和instancof 组合使用
判断泛型,如果泛型放在左边编译通过,可以这样使用
但是泛型放在instanceof右边会一直报错误,因为无法在运行时将泛型替换为对应的对象
一种替代的解决方法:
不使用instanceof操作符,通过判断两个待比较对象的字节码类型(Class对象)是否一致来判断是否类型相等
例子:
package com.swing.entry;
public class Test2 {
public static void main(String[] args) {
com(String.class);
}
/**
* 不使用instanceof 判断是否是同一种类型,
* 判断目标类型和源类型的字节码对象(Class)是否是同一种类型
* 通过class类的toString 方法,判断打印出来的类型是否相等,或者直接判断
*
* @param t
*/
public static<T> void com(Class<T> t){//泛型方法
String string = new String();
if(string.getClass().equals(t)){
//if(string.getClass().toString().equals(t.toString())){ //或者 toString()
System.out.println(true);
}else System.out.println(false);
//System.out.println((new String()) instanceof String);
}
}