java反射简单问题

livend 2013-11-01 09:38:38
java反射一直没有弄明白的一个问题:

例如,String st
st 与String.class 到底什么关系?
...全文
516 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bfas2010 2013-11-08
  • 打赏
  • 举报
回复
简单点说,String.class 就是String的二进制的类文件,权限比String大,可以调用String中的私有方法(若果有)。或者看做类的另一种形式。一样的可以创建对象,然后调用其方法。
wo111180611 2013-11-08
  • 打赏
  • 举报
回复
String.class是获得String类的Class对象
jingwenpeng 2013-11-07
  • 打赏
  • 举报
回复
我所设计的三个红外对管探测地面的算法是:首先中间检测到黑线,则车直行,这时当黑线偏离时,左右的红外对管都有可能检测到。到检测到就向相应方向转。这时黑线必将到达中间的红外对管下面,车又直行。
冫眼 2013-11-07
  • 打赏
  • 举报
回复
1.String st:st是String类型变量,是对String对象的引用 2.Sting.class表示String类所具有成员
「已注销」 2013-11-07
  • 打赏
  • 举报
回复
class A { public staitic String TT; } A a a与A.TT是什么关系?
不泪之城 2013-11-07
  • 打赏
  • 举报
回复
引用 5 楼 ysjian_pingcx 的回复:
楼主也是吧,我也刚从新手走过来,楼主的问题说明你细化思考, String st;其实是你定义了一个String类型的对象,此时这个对象没有指向任何引用,为null,如果试图去调用st的任何方法,会抛出NullPointerException。 而String.class,其实返回的是String类型的字节码文件对象的引用,楼主应该见过.java文件被编译后是.class文件,String.class其实就是String.java编译后的字节码在内存中以对象存在的形式,它是唯一的,任何调用String.class的地方都返回相同字节码对象的引用
此为正解
ghw554557313 2013-11-07
  • 打赏
  • 举报
回复
引用 8 楼 ghw554557313 的回复:
[quote=引用 4 楼 u011926709 的回复:] 一个表示String对象,一个表示Class对象,你说有区别否。
言简意赅 st表示在内存中的一个空引用 class表示了一个类所具有的特征 两者完全独立的概念 楼主感受一下[/quote] Class还可以这样理解: java语言是面向对象的,所有的事物都可以抽象成一个类,比如人,动物,老师,学生,猪,猫狗等等,那么,所有的类也应该能被抽象成一个类,就是Class
ghw554557313 2013-11-07
  • 打赏
  • 举报
回复
引用 4 楼 u011926709 的回复:
一个表示String对象,一个表示Class对象,你说有区别否。
言简意赅 st表示在内存中的一个空引用 class表示了一个类所具有的特征 两者完全独立的概念 楼主感受一下
jessie0605 2013-11-06
  • 打赏
  • 举报
回复
st 是String类的对象 String.class 是Class类的对象 每个类都有且只有一个Class类的对象,我们可以通过反射来得到对应的类的私有属性,私有构造方法,以及私有的方法等,当然公有的更不用说了,比如说单例模式中(保证对象唯一性),一般情况下我们在其他程序中不能创建新的对象(因为构造方法设置私有了),但是我们可以通过反射来得到很多对象。 而反射就需要用到Class类了。
  • 打赏
  • 举报
回复
楼主也是吧,我也刚从新手走过来,楼主的问题说明你细化思考, String st;其实是你定义了一个String类型的对象,此时这个对象没有指向任何引用,为null,如果试图去调用st的任何方法,会抛出NullPointerException。 而String.class,其实返回的是String类型的字节码文件对象的引用,楼主应该见过.java文件被编译后是.class文件,String.class其实就是String.java编译后的字节码在内存中以对象存在的形式,它是唯一的,任何调用String.class的地方都返回相同字节码对象的引用
旁观者吗 2013-11-05
  • 打赏
  • 举报
回复
一个表示String对象,一个表示Class对象,你说有区别否。
solomon5926 2013-11-05
  • 打赏
  • 举报
回复
st是一个String引用,因为你没有生成对象,所以st指向null。而String.class是获得String类的Class对象。
  • 打赏
  • 举报
回复
string.class其实就是string的类加载器。
xiaolong806124 2013-11-01
  • 打赏
  • 举报
回复
string.class 就是获得string类的各方面信息。虽然st也会包含了string类的部分信息,但不全。其次,st是被静态定义的实例。假设你想创建一个实例,但又不知道这个类怎么构成的,比如有什么构造函数,什么函数及修饰符,这时需要用反射。

62,614

社区成员

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

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