对反射的测试

 
package reflect;
/**
 * 对反射的测试  需要类java.lang.reflect.*;的包的导入 其次看Class和Method类的运用
 * 重点:1.Class c=Class.forName("text.Student");//相当于单子模式,只有对外的一个窗口forName()

来创建对象
 *    2.Method met=c.getMethod("Read");//method 只支持公共的方法
 *    3.Object ocd=met.invoke(obj1,null);//Object返回为方法的返回对象
 * 注意:Method 创建其对象时用 Class.getMethod("调用类中的方法名",方法中的参数类型)生成的

Method对象
 *    因为getMethod()支持的是Class类型,所以用Class[] a=new Class[];来创建对象(具体参照

method2.java注释讲解)
 *      再就是运用 Method中的invoke方法 同理需要的是Object型的
 * @author Alex
 */
//import java.lang.*;
import java.lang.reflect.*;
import text.HighStudent;
public class  Refl{
    public static void main(String args[]){
         try{
            //
         //Class q=Class.forName("java.lang.String");
          //Class c=String.class("java.lang.String");
         /* Class c=Class.forName("text.Student");//父类
          Class e=Class.forName("text.HighStudent");//子类,但不能调用父类中的方法
            Method m[]=c.getDeclaredMethods();//获得类中的各种各样的方法
*/
            /*String s="abc";
            Class b=(Class)q.newInstance();//newInstance(s);
            Method a=q.getMethod("subString");
            Object j=a.invoke(q,s);
            String h=j.toString();*/
           
          /* //父类中的方法调出         
            for(int i=0;i<m.length;i++)
                 System.out.println(m[i].toString());
            System.out.println("/n");
            //字类中的方法调出
            Method n[]=e.getDeclaredMethods();
            for(int i=0;i<n.length;i++)
                System.out.println(n[i].toString());*/
          Class c=Class.forName("text.Student");//相当于单子模式,只有对外的一个窗口

forName()来创建对象
//          Class arg[]=new Class[2];
//          arg[0]=Integer.TYPE;
          Method met=c.getMethod("Read");//method 只支持公共的方法
//          Object[] obj=new Object[2];
//          obj[0]=new Integer(1);
          //Object obj=new Student();
          Student obj1=new HighStudent();//创建调用对象的实例,因为父类为抽象类,所以只

能通过子类访问
                                         //1. Student obj1=new HighStudent();
          HighStudent obj2=new HighStudent();//2.HighStudent obj2=new HighStudent();
          Object ocd=met.invoke(obj1,null);//Object返回为方法的返回对象
          //String ocd1=met.invoke(obj1, null);//方法返回的对象名义上说是方法的返回值,

但只强调有无返回
                                               //其实返回Object型
          System.out.println(ocd);
         
           }catch(Throwable e){
                System.err.println(e);
}}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值