楼主的代码中透露出有几个基本概念没有弄明白,请看代码:
String str="Hello";
Class cls=str.class(); // str.class()这样写是在调用str这个字符串对象的class()方法,问题是,字符串对象有这样一个方法吗?显然没有啊,那怎么能写这样的语句呢?
而第二段代码的含义是什么呢?请看注释:
String str="hello";
Class cls=str.getClass(); // str字符串对象确实有getClass()方法,而且该方法调用之后的返回值就是一个Class类的对象,然后将这个对象赋给一个Class类的引用cls ,就像咱们最熟悉的new一个person类之后赋值给一个person类的引用: Person zhangsan = new Person(); 这当然是在正确不过的了。
这句话理解的关键在于Class这个类,Class类其实不用想得太玄,按照Person类的模式一样理解就行:
Person类是不是代表了现实世界中的“人”? 你如果定义一个Fruit类,是不是就可以代表现实世界中的“水果”?
那么,在万物皆对象的JAVA体系中,硬盘上,甚至内存中的文件,是不是也可以被表示成一个类?这样就“欧”了,
你写的person.java 编译出来之后是不是产生了一个 Person.class文件在硬盘上? Fruit.java 是不是编译后产生了
一个Fruit.class文件? 这些*.class文件肯定有一些共同的特征,那么,你就可以把这些文件归为一个类,在java中就
有这么一个现成的类,类名就叫Class;
现在你再回头去理解Class cls=str.getClass(); 会不会清晰一点呢?
|