框架基础(2) 捋一捋 反射

Class(常叫做大class)它是类中的类,通过个类可以取类中的相关信息,为什么要取类中的信息呢?目的就是用取的信息做想做的事,假设我们不知道什么时候用一个或一些类,我们当然希望当用到自动用到,不用的时候自动不用 可能这话有点难以理解。什么叫用到的时候自动用到,难道你不知道什么用为什么写一个类呢?因为是我们希望让框架帮我们托管我们的代码,而不是手动创建,这就是动态创建而非用程序写死。

讲了太多,我们做个实例加深一下印象。
声明一个类,并把一个成员变量为公用变量与私有变量

public String name;//姓名 这里声明为公有成员
private int age;//年纪 这里的是私有成员

声明一个公有方法与私有方法

public void test(){
    
    
        System.out.println("----公用方法测试-------");
    }
private void test2(){
    
    
        System.out.println("-------这是一个私有方法测试-------");
    }
private void test3(String str){
    
    
        System.out.println("-------这是一个有参私有方法测试-------");
    }

我们做一下测试

//通过大Class 可以取Stu类中 public 中成员变量 name的类关声明
        Class classstu=Stu.class; //声明一个Class 类 去接收Stu类
        System.out.println(classstu.getField("name"));//获取公用成员变量信息
        //------获取成功

        System.out.println(classstu.getField("age"));//获取私有成员时
        //-------获取失败

从上面的示例能看出通过这上面方法获取 私有成员时会出错。那么如何我想获取怎么办呢?使用下面方法

System.out.println(classstu.getDeclaredField("age"));//获取私有成员时
        //-------获取成功

同样我们想获取公用方法与私有方法正确的方式如下

//通过大Class 可以取Stu类中 public 中成员方法
        Class classstu=Stu.class; //声明一个Class 类 去接收Stu类

        //------获取公用方法(无参)
        System.out.println(classstu.getMethod("test"));

        //-------获取私有无参方法
        System.out.println(classstu.getDeclaredMethod("test2"));
        
        //-------获取私有方法(有参数)
        System.out.println(classstu.getDeclaredMethod("test3",String.class));

同样也能处理构造方法

//通过大Class 可以取Stu类中 public 调用构造方法
        Stu s1=Stu.class.newInstance();
        s1.setName("test");
        s1.setAge(15);
        System.out.println(s1.toString());

好了,介绍到这里,也可以参考 我前面写的关于动态代理的相关文章。

猜你喜欢

转载自blog.csdn.net/weixin_44690195/article/details/106707991