java instanceof :一个类型判断的java保留字,不知道是不是关键字,类似javascript 中的typeof
格式: 左边 instance 右边;
解释:如果左边的类型等于右边的类型返回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); } }