zoukankan      html  css  js  c++  java
  • [java]反射的一个例子🌰

    获取类实例

    Class<A> aClass = A.class;
    Class<? extends A> aClass1 = new A().getClass();
    Class<?> aClass2 = Class.forName("com.atguigu.test.A");
    Class<?> aClass3 = A.class.getClassLoader().loadClass("com.atguigu.test.A");
    
    //额外地: 类加载器还可以读取文件
    InputStream resourceAsStream = A.class.getClassLoader().getResourceAsStream("jdbc.properties"); //注: 而不是A.class.getResourceAsStream(),会报空指针错误.
    

    获取类加载器

    //类的加载顺序: 核心--扩展--用户自定义
    System.out.println(A.class.getClassLoader());//sun.misc.Launcher$AppClassLoader@18b4aac2
    System.out.println(A.class.getClassLoader().getParent());//sun.misc.Launcher$ExtClassLoader@66d3c617
    System.out.println(A.class.getClassLoader().getParent().getParent());//null
    
    //String是核心类
    System.out.println(String.class.getClassLoader());//null
    

    类自身方法反射调用其他方法

    import java.lang.reflect.Method;
    
    public class DemoTest {
        public static void main(String[] args) throws Exception {
            Person person = new Person();
            person.show("say", "m1");
        }
    }
    
    class Person {
        public void show(String s, String  args) throws Exception {
            Method method = this.getClass().getDeclaredMethod(s, String.class);
            method.invoke(this, args);
            System.out.println(args);
        }
    
        public void say(String name) {
            System.out.println(name);
            System.out.println("person say");
        }
    }
    
  • 相关阅读:
    Numpy存字符串
    一个类似于postman的协议测试工具
    freetds设置超时
    学习jQuery
    webpy 使用python3开发
    gdb调试coredump文件
    htop和ncdu
    rqalpha-自动量化交易系统(一)
    perl学习-运算符添加引号
    xss 和 csrf攻击详解
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/12807945.html
Copyright © 2011-2022 走看看