zoukankan      html  css  js  c++  java
  • 反射

    package reflenction;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.BlockJUnit4ClassRunner;
    
    import java.lang.annotation.Annotation;
    import java.lang.reflect.*;
    import java.util.Arrays;
    
    public class Test1 {
    
        public static void main(String[] args) {
            Class cls = ReflenctionExample.class;
            // 返回类全名
            System.out.println(cls.getName());
            // 返回类名
            System.out.println(cls.getSimpleName());
            // 获取类的修饰符,返回int
            System.out.println(cls.getModifiers());
            System.out.println(Modifier.isPublic(cls.getModifiers()));
    
            // 获取包信息
            Package pa = cls.getPackage();
            System.out.println(pa.getName());
    
            // 返回父类
            Class superclass = cls.getSuperclass();
            System.out.println(superclass.getSimpleName());
    
            // 返回实现的接口,只会返回当前类的接口,而不会返回父类实现的接口
            Class[] interfaces = cls.getInterfaces();
            System.out.println(interfaces[0].getName());
    
            // 返回构造方法,不会返回默认的构造方法,即此类没有显示的定义构造方法将返回为空
            Constructor[] constructors = cls.getConstructors();
            System.out.println("构造方法名:" + constructors[0].getName());
            try {
                Constructor constructor = cls.getConstructor(new Class[]{int.class});
                // 利用Constructor对象实例化一个类
                ReflenctionExample example = (ReflenctionExample)constructor.newInstance(1);
                System.out.println("example.field3:" + example.field3);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
    
            }
    
    
            // 返回所有公共方法
            Method[] methods = cls.getMethods();
            System.out.print("公共方法名:");
            for (Method m : methods) {
                System.out.print(m.getName() + ",");
            }
            System.out.println();
            // 返回所有所有方法
            Method[] method2 = cls.getDeclaredMethods();
            System.out.printf("所有方法名:");
            for (Method m : method2) {
                System.out.print(m.getName() + ",");
            }
            System.out.println();
    
            // 返回所有公共属性
            Field[] fields = cls.getFields();
            System.out.print("公共属性名:");
            for (Field field : fields) {
                System.out.print(field.getName() + ",");
            }
            System.out.println();
    
    
            // 返回所有属性
            Field[] fields2 = cls.getDeclaredFields();
            System.out.print("所有属性名:");
            for (Field field : fields2) {
                System.out.print(field.getName() + ",");
            }
            System.out.println();
    
            // 返回所有注解
            Annotation[] annotations = cls.getAnnotations();
            System.out.print("所有注解名:");
            for (Annotation annotation : annotations) {
                System.out.println(annotation.annotationType().getName() + ",");
            }
            System.out.println();
    
    
    
        }
    }
    
    @RunWith(value = BlockJUnit4ClassRunner.class)
    class ReflenctionExample implements InterfaceExample {
        private int field1;
        protected int field2;
        public int field3;
    
        public ReflenctionExample(int flag) {
            this.field3 = flag;
        }
    
        public void test1() {
        }
    
        protected void test2() {
        }
    
        private void test3() {
        }
    
    }
    
    interface InterfaceExample {
    
    }
  • 相关阅读:
    CSS优化压缩
    CSS clear both清除浮动总结
    jQuery下拉列表二级联动插件
    网站靠什么赚钱?
    程序员到高级程序员的职业生涯
    ie数组不支持indexOf 方法解决
    jquery中的each方法,$.each this.each $.fn.each
    css3写出0.5px的边框
    js 自己创建ready多个可以依次加载
    javascript中的removeEventListener失效问题
  • 原文地址:https://www.cnblogs.com/dayaodao/p/8707600.html
Copyright © 2011-2022 走看看