关于instanceof

wbo112 2014-02-10 04:31:16
如"a" instanceof String
String.class指的是Class这个类的对象,那这里的String指的是什么。
另我需要通过反射得到一个参数类型,判断另一个参数是不是相同类型,想用instanceof ,请问如果使用反射得到类似上面String这样的东西呢。
...全文
956 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2014-02-10
  • 打赏
  • 举报
回复
引用 6 楼 wbo112 的回复:
[quote=引用 5 楼 oh_Maxy 的回复:] 人类 张三 = new 人类("张三"); 张三 instanceof 人类 //这是在判断“张三”是不是“人类”这个范畴的一个实例。 英语instance :例子,实例。 String.class 返回的Class,是从侧面反映了java“万物皆对象”的思想。 Class是对所有定义的“类”的一个抽象:“类”里会有field、method、Constructor等。 不光String里有field、method、Constructor,Integer,甚至Object所有的“类”都有field、method、Constructor(只是有些为null)。因此,我们将所有的“类”,再次抽象成一个“类”(类2),给它定义为Class
如何通过反射得到类似String 这样的东西呢,另外String 这种属于哪个类型呢,Object,Class,还是? [/quote] 比如我定义如下一个类: public class A{ public String name; } 如果用的时候,得到A对应的Class实例:Class c = A.class; 此时可以通过下面的方式得到name属性:Field f = c.getDeclaredField("name"); 再通过f得到其类型:Type t = f.getGenericType(); 此时可以使用t来和String.class做比较:

public class TestType {

    public static void main(String[] args) throws SecurityException, NoSuchFieldException {
        Class<A> c = A.class;
        Field f = c.getDeclaredField("name");
        Type t = f.getGenericType();
        System.out.println(t.equals(String.class));
    }

}

class A {
    public String name;
}
golo975 2014-02-10
  • 打赏
  • 举报
回复
1.Class类是对java中“类”这个概念的封装。每一个java类都对应一个Class对象。比如String类对应的就是String.class对象。Class类和其他类没有本质的区别,只不过用途有点特殊。 2.要用反射实现instanceof 效果可以使用Class的方法isInstance(Object obj),比如说,判断一个对象s是否是String类型的,可以这样写: String.class.isInstance(s),会返回一个boolean值。
  • 打赏
  • 举报
回复
得不到类型这种东西,只能得到String字符串这种东西。
wbo112 2014-02-10
  • 打赏
  • 举报
回复
引用 7 楼 fangmingshijie 的回复:
String是个抽象的东西,就像男人和女人,抽象出来都是人,怎么弄出来人这个东西呢。String也一样。
那就是不能通过反射得到类似String这样的东西?
  • 打赏
  • 举报
回复
String是个抽象的东西,就像男人和女人,抽象出来都是人,怎么弄出来人这个东西呢。String也一样。
wbo112 2014-02-10
  • 打赏
  • 举报
回复
引用 5 楼 oh_Maxy 的回复:
人类 张三 = new 人类("张三"); 张三 instanceof 人类 //这是在判断“张三”是不是“人类”这个范畴的一个实例。 英语instance :例子,实例。 String.class 返回的Class,是从侧面反映了java“万物皆对象”的思想。 Class是对所有定义的“类”的一个抽象:“类”里会有field、method、Constructor等。 不光String里有field、method、Constructor,Integer,甚至Object所有的“类”都有field、method、Constructor(只是有些为null)。因此,我们将所有的“类”,再次抽象成一个“类”(类2),给它定义为Class
如何通过反射得到类似String 这样的东西呢,另外String 这种属于哪个类型呢,Object,Class,还是?
oh_Maxy 2014-02-10
  • 打赏
  • 举报
回复
人类 张三 = new 人类("张三"); 张三 instanceof 人类 //这是在判断“张三”是不是“人类”这个范畴的一个实例。 英语instance :例子,实例。 String.class 返回的Class,是从侧面反映了java“万物皆对象”的思想。 Class是对所有定义的“类”的一个抽象:“类”里会有field、method、Constructor等。 不光String里有field、method、Constructor,Integer,甚至Object所有的“类”都有field、method、Constructor(只是有些为null)。因此,我们将所有的“类”,再次抽象成一个“类”(类2),给它定义为Class
wbo112 2014-02-10
  • 打赏
  • 举报
回复
引用 2 楼 healer_kx 的回复:
String是类型, String.class 是 类型对象。
如何通过反射得到类似String 这样的东西呢,另外String 这种属于哪个类型呢,Object,Class,还是?
wbo112 2014-02-10
  • 打赏
  • 举报
回复
引用 楼主 wbo112 的回复:
如"a" instanceof String String.class指的是Class这个类的对象,那这里的String指的是什么。 另我需要通过反射得到一个参数类型,判断另一个参数是不是相同类型,想用instanceof ,请问如果使用反射得到类似上面String这样的东西呢。
"a".getClass().getSimpleName() 这个得到的是字符串呀
healer_kx 2014-02-10
  • 打赏
  • 举报
回复
String是类型, String.class 是 类型对象。
  • 打赏
  • 举报
回复
String是一个类型,可以这样获取类型,如"a".getClass().getSimpleName()

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧