黑马程序员技术交流社区
标题:
为什么通过反射创建的对象不需要导入相应的包
[打印本页]
作者:
刘军亭
时间:
2013-1-27 12:21
标题:
为什么通过反射创建的对象不需要导入相应的包
本帖最后由 刘军亭 于 2013-1-27 14:12 编辑
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.Properties;
/*
* 反射的应用,微型框架
config.properties文件内容:className = java.util.HashSet
* */
public class ReflectTest {
public static void main(String[] args) throws Exception {
InputStream ips = new FileInputStream("config.properties");
Properties props = new Properties();
props.load(ips);
ips.close();
String className = props.getProperty("className");
//而这里也会new一个HashSet对象但为什么不用导包就可以正常运行呢。
Collection collections = (Collection)Class.forName(className).newInstance();
// 如果不用反射时候的普通做法。要导入相应的包。
//Collection collections = new HashSet();
ReflectPoint pt1 = new ReflectPoint(3,3);
ReflectPoint pt2 = new ReflectPoint(2,2);
ReflectPoint pt3 = new ReflectPoint(1,1);
collections.add(pt1);
collections.add(pt2);
collections.add(pt3);
collections.add(pt3);
System.out.println(collections.size());
}
}
class ReflectPoint{
int x;
int y;
ReflectPoint(int x,int y){
this.x = x;
this.y = y;
}
}
作者:
唐晓
时间:
2013-1-27 12:40
JAVA反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能.
你反射了一个类,那个类就自动加载进来了,所有的属性和方法也可以通过反射的方法来访问调用,所以就不用在导入包了。
作者:
周怡
时间:
2013-1-27 13:39
要让Java程序能够运行,那么就得让Java类要被Java虚拟机加载。现在我们运行的所有的程序都是在编译期的时候就已经知道了你所需要的那个类的已经被加载了。 Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载。通过反射的方法能够知道类的基本结构,所以不需要导入包了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2