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

© One丶Life 中级黑马   /  2015-11-22 20:31  /  283 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、通过反射运行配置文件的内容

测试类:


package cn.refTest;

import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;

public class Test {

    public static void main(String[] args) throws Exception {

        //加载配置文件
        Properties p =new Properties();
        FileReader fr =new FileReader("class.properties");
        p.load(fr);
        fr.close();
        
        //获取数据
        String className = p.getProperty("className");
        String methodName = p.getProperty("methodName");
        
        //反射
        Class c = Class.forName(className);
        Constructor con = c.getConstructor();
        Object obj = con.newInstance();
        
        //调用方法
        Method m = c.getMethod(methodName);
        m.invoke(obj);
    }
}




Student类:


package cn.refTest;

public class Student {

    public void show(){
        System.out.println("学习");
    }
}




Teacher类:


package cn.refTest;

public class Teacher {

    public void show(){
        System.out.println("授课");
    }
}




Worker类

package cn.refTest;

public class Worker {

    public void show(){
        System.out.println("工作");
    }
}





配置文件:

className=cn.refTest.Student
methodName=show





2、给定ArrayList<Integer>的一个对象,在这个集合中添加一个字符串。

/*
* ArrayList原始的add方法是Object类型
* 所以拿到它的字节码文件对象,通过反射就可以将字符串放进去
*/

package cn.refTest2;

import java.lang.reflect.Method;
import java.util.ArrayList;

public class ArrayListTest {

    public static void main(String[] args) throws Exception {

        ArrayList<Integer> array = new ArrayList<Integer>();
        
        Class c = array.getClass();
        
        Method m = c.getMethod("add", Object.class);
        m.invoke(array, "hello");// 调用array的add方法,传入的值是hello
        m.invoke(array, "java");
        
        System.out.println(array);
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马