我总是把字节码对象名和  对象名   以及通过反射获取的方法名 弄混 
一下的两个问题我都遇到了问题,  看看这两个题,心中没有一个明确的思路 
 
package dsh_1009_Base; 
 
import java.lang.reflect.Method; 
import java.util.ArrayList; 
 
/** 
 *9、ArrayList<Integer> list = new ArrayList<Integer>();  
 * 在这个泛型为Integer的ArrayList中存放一个String类型的对象。 
 * 注意:通过反射来分析并实现 
 * 
 */ 
public class ReflectTest02 { 
 
        public static void main(String[] args) throws Exception { 
                //创建集合 
                ArrayList<Integer> list = new ArrayList<Integer>(); 
                 
                //获取集合的字节码对象 
                Class clazz = list.getClass(); 
                //我不知道这里为什么不写成如下 
                //Class clazz = Class.forName("ArrayList"); 
                //Object newInstance = clazz.newInstance(); 
                 
                //System.out.println(newInstance); 
                 
                //获取里面的方法 
                Method method = clazz.getMethod("add", Object.class); 
                 
                method.invoke(list, "adcjsl"); 
                 
                 
                System.out.println(list.get(0)); 
                 
 
        } 
 
} 
 
 
 
第二题 
package dsh_1009_Base; 
 
import java.lang.reflect.Constructor; 
import java.lang.reflect.InvocationTargetException; 
import java.lang.reflect.Method; 
 
/** 
 * 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象,并调用该对象中的方法 分析: 
 * 1.首先要创建一个类,里面有个方法,作用是打印一个字符串 
 * 
 */ 
public class ReflectTest01 { 
 
        public static void main(String[] args) throws ClassNotFoundException, 
                        NoSuchMethodException, SecurityException, InstantiationException, 
                        IllegalAccessException, IllegalArgumentException, 
                        InvocationTargetException { 
                // 创建该类的字节码对象 
                Class clazz = Class.forName("dsh_1009_Base.ToStringDemo"); 
                //System.out.println(clazz); 
 
                // 获取空参构造函数 
                Constructor cons = clazz.getConstructor(null); 
 
                // 通过构造器构造该类对象 
                Object newObj = cons.newInstance(); 
                //System.out.println(); 
                // 通过字节码对象获取里面的有参方法 
                Method method = clazz.getMethod("strToString", String.class); 
 
                // public Object invoke(Object obj, Object... args) 
                method.invoke(newObj, "你好,世界"); 
                 
//                TestString t=TestString.class.newInstance(); 
//        //反射调用对象中的方法 
//                TestString.class.getMethod("show",String.class).invoke(t, new String("abcdef")); 
 
        } 
 
} 
 
class ToStringDemo { 
         
        public ToStringDemo() { 
                super(); 
                // TODO Auto-generated constructor stub 
        } 
 
        public void strToString(String s) { 
                System.out.println(s); 
        } 
} |   
        
 
    
    
    
     
 
 |