黑马程序员技术交流社区
标题:
Class类的一个疑问
[打印本页]
作者:
newlaw2013
时间:
2012-3-29 18:57
标题:
Class类的一个疑问
java 中API文档很多内容一看起来觉得好“抽象”,现在列出一个读了好几遍都没有想明白的知识点:
Class类的forName:
forName
public static Class<?> forName(String className)
throws ClassNotFoundException
返回与带有给定字符串名的类或接口相关联的 Class 对象
。调用此方法等效于:
Class.forName(className, true, currentLoader)
请哪位达人从另外的角度帮我解释一下红色字体部分的文字啊?(返回与带有给定字符串名的类或接口相关联的 Class 对象)
作者:
罗杰
时间:
2012-3-29 19:27
本帖最后由 罗杰 于 2012-3-29 19:29 编辑
就是根据作为参数的字符串返回所对应的类的引用,举例子吧:
Class.forName("java.lang.String") 会先判断内存中是否加载了 java.lang.String 这个类,如果没有就加载这个类,然后返回这个类(字节码)的引用(是一个Class类的对象)
主要是反射时用,不理解反射可以看看张老师Java加强的17课(从17课开始)
作者:
李增强
时间:
2012-3-29 23:53
就是返回的是你调用的这个类的字节码文件的的引用,主要用在反射中,是为了拿到这个字节码文件中的一些方法名和调用这儿方法。
作者:
丁佼
时间:
2012-3-30 00:15
首先正解在沙发,我再写一点简单的说明。
========================
public static Class<?> forName(String className)
返回与带有给定字符串名的类或接口相关联的 Class 对象
========================
解读:
指定字符串名,就是参数列表里的String className;
Class对象,也就是Class类的对象,是一个类在内存里的字节码;(字节码:也即是“类”在内存中的存在形式。)
static修饰符表明可以使用类名直接调用;
示例:
Class cls = new Class.forName(“Student”);
表示,根据字符串“student”在内存里查找对应的字节码文件,如果找到的话则把整个“student”类的字节码作为一个对象返回给Class类型的引用cls。
关于返回值是Class,只要你能明白class Class也就明白了,这是一个用于描述“类”的类。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2