package learn.reflect/假设这个包存的是主类(Reflex),Book类不在此包中,在learn.reflect.way3包中主类,不会出现导入Book类的语句/。 
 import java.lang.reflect.Constructor;//此类接收一个构造 
 import java.lang.reflect.Method;//此类接收一个普通方法 
/*反射:一般来讲,都是先有类再new一个对象实现实例化,但也可使用反射即用 Class 的 对象来接收你指定的类,Class的对象再调用newInstance()找到这个指定类中的无参构造来实例这个类,产生一个Object对象,那如果是有参构造呢?,在程序中我会说明。 
 反射调用普通方法我也会说明。 
 实现方式: 
 X{ 
 }//X表示某一个类 
 1.Class《?》cla1=X.getClass();//调用类中的geClass方法获得一个指定类 
 Object obj1=cla.newInstance();//反射完成,获得一个指定类的实例 
 2.Class 《?》cla2=X.class;//调用类中的一个class成员获得一个指定类 
 Object obj2=cla2.newInstance();//反射完成,获得一个指定类的实例 
 3.Class《?》cla3=Class.forName(“java.learn.reflex.way3”);/调用Class中的静态方法 forName(“String className”),输入一个完整的包.类。这个类就是一个指定类/ 
 Object obj3=Cla3.newInstance();//反射完成,获得一个指定类的实例 
*/public class Reflex{ 
 //如果类中没有无参构造,则要使用Class类中的getConstructor()方法 
 public static void main(){ 
 /保存指定类的信息,还是声明一个对象,我也不知道,如果有大神看到,告诉我这个萌新吧/ 
 Class 《?》 cla=Class.forName(“learn.reflect.way3.commodity”); 
 /根据传getconstructor方法中类型和个数来重载构造,返回指定类的不同构造/ 
 Constructor 《?》 con=cla.getConstructor(String.class); 
 /传入一个String,并且实例完成/ 
 Object obj=con.newInstance(“安全裤”); 
 //输出验证 
 System.out.println(obj); 
 //反射调用普通方法必须要使用Method类的对象来接收。 
 String fieldName=”price”;//这里的p小写 
 //(方法名字,此方法的参数)无返回值不用写 
 Method setMet=cla.getMethod(“set”+initcat(fieldName),double.class); 
 Method getMet=cla.getMethod(“get”+inincat(fieldName)); 
 setMet.invoke(obj,58.8);//调用底导方法,就是此对象中保存的方法 
 Sysetm.println.out(getMet.invoke());//输出返回值验证 
 } 
 public static String initcap(String reviseFieldName){//让方法名称首字母大写 
 return reviseFieldName.subString(0,1).toUpperCase()+reviseFieldName.subString(1); 
 /首先截取0—1长度(不包括1)的字符串使首字母大写。再加上截取1长度以后(包括1)的所有字符串使首字母以外的字符串再加进来。/ 
 //用getDeclaredField()来获得成员title并修改 
 Field fie=cla.getDeclaredField(“title”); 
 fie.set(obj,”java开发”); 
 fie.setAccessible(true);//解除封装 
 System.out.println(fie.get(obj));//输出fie中的属性 
 } 
 }//Book类不在此包中 
 class commodity{ 
 private String tilte; 
 private double price=88.8; 
 public commodity(String title){ 
 this.title=title; 
 } 
 public commodity(String title,double price){ 
 this.title=title; 
 this.price=price; 
 } 
 public void setPrice(double price){ 
 this.price=price; 
 } 
 public double getPrice(){ 
 return this.price; 
 } 
 public String toString(){ 
 return “商品名:”+this.title+”\n”+”售价:”+this.price; 
 } 
 } 
 备注:《》=<>不这样做显示不出来内容