A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘军亭 于 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;
        }
}

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
JAVA反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能.
你反射了一个类,那个类就自动加载进来了,所有的属性和方法也可以通过反射的方法来访问调用,所以就不用在导入包了。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
要让Java程序能够运行,那么就得让Java类要被Java虚拟机加载。现在我们运行的所有的程序都是在编译期的时候就已经知道了你所需要的那个类的已经被加载了。 Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载。通过反射的方法能够知道类的基本结构,所以不需要导入包了。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马