反射练习之越过泛型检查

反射练习:

练习1:我有一个ArrayList集合,现在我想在这个集合中添加一个字符串数据,如何实现?

package com.aynu26;

//练习1:我有一个ArrayList集合,现在我想在这个集合中添加一个字符串数据,如何实现?

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

public class ReflectDemo7 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        //创建集合
        ArrayList array = new ArrayList();
        array.add(10);
        array.add(20);
        array.add(30);
//        array.add("hello");

        Class c = array.getClass();
        Method m = c.getMethod("add", Object.class);

        m.invoke(array,"hello");
        m.invoke(array,"world");
        m.invoke(array,"java");

        System.out.println(array);
    }
}

[10, 20, 30, hello, world, java]

 练习2:通过配置文件运行类中的方法

package com.aynu27;

//练习2:通过配置文件运行类中的方法

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

public class ReflectTest {
    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
//        Student s=new Student();
//        s.study();

//        Teacher t=new Teacher();
//        t.teach();

        /*
        *   class.txt
        *   className=xxx
        *   methodName=xxx
        *
        *  */

        //加载数据
        Properties prop =new Properties();
        FileReader fr=new FileReader("D:\\idea1\\workplace\\myMap\\class.txt");
        prop.load(fr);
        fr.close();

//        className=com.aynu27.Student
//        methodName=study
        String className = prop.getProperty("className");
        String methodName = prop.getProperty("methodName");

        //通过反射来使用
        Class c = Class.forName(className);//com.aynu27.Student

        Constructor con = c.getConstructor();
        Object obj = con.newInstance();

        Method m = c.getMethod(methodName);//study
            m.invoke(obj);
    }

}

反射练习之越过泛型检查_第1张图片

 用爱成就学员

 

你可能感兴趣的:(java)