Java反射-操作Field、Method、Constructor

1,Field、Method、Constructor中的反射数据

1)Field类

image.png

2)Method类
image.png

3)Constructor类
image.png

4)The AccessibleObject class is the base class for Field, Method and
Constructor objects.
image.png

2,打印所有成员变量、方法、构造器

public static void main(String[] args) {
    Field[] fields = String.class.getDeclaredFields();
    for(Field field : fields){
      field.setAccessible(true);
      System.out.println(Modifier.toString(field.getModifiers()) + " " + field.getType().getSimpleName() + " " + field.getName() + ";");
    }

    System.out.println("----------------------------");

    Method[] methods = String.class.getDeclaredMethods();
    for(Method method : methods){
      method.setAccessible(true);
      String temp = Modifier.toString(method.getModifiers()) + " " + method.getReturnType() + " "
              + method.getName() + "(";
      for(Class clazz : method.getParameterTypes()){
        temp += clazz.getSimpleName() + ",";
      }
      temp = temp.substring(0, (temp.lastIndexOf(",") == -1)?temp.length():temp.lastIndexOf(","));
      temp += ")";
      System.out.println(temp);
    }

    System.out.println("----------------------------");

    Constructor[] constructors = String.class.getDeclaredConstructors();
    for(Constructor constructor : constructors){
      constructor.setAccessible(true);
      String temp = Modifier.toString(constructor.getModifiers()) + " " + constructor.getName() + "(";
      for(Class clazz : constructor.getParameterTypes()){
        temp += clazz.getSimpleName() + ", ";
      }
      temp = temp.substring(0, (temp.lastIndexOf(",") == -1)?temp.length():temp.lastIndexOf(","));
      temp += ")";
      System.out.println(temp);
    }
  }

3,Field、Method、Constructor上

1)是否有指定注解(自定义注解的处理)
2)modifier判断

public static void main(String[] args) throws Exception {
        Method method = Class.class.getDeclaredMethod("newInstance", null);
        if(method.isAnnotationPresent(CallerSensitive.class)){
            System.out.println(method.getDeclaringClass());
            System.out.println(Modifier.isStatic(method.getModifiers()));
            System.out.println(Modifier.isPublic(method.getModifiers()));
            System.out.println(Modifier.isPrivate(method.getModifiers()));
        }

        Field field = Class.class.getDeclaredField("name");
        if(!field.isAnnotationPresent(CallerSensitive.class)){
            System.out.println(field.getName());
            System.out.println(Modifier.isStatic(field.getModifiers()));
            System.out.println(Modifier.isPublic(field.getModifiers()));
            System.out.println(Modifier.isPrivate(field.getModifiers()));
        }

        Constructor constructor = Class.class.getDeclaredConstructor(ClassLoader.class);
        if(!constructor.isAnnotationPresent(CallerSensitive.class)){
            System.out.println(constructor.getDeclaringClass());
            System.out.println(Modifier.isStatic(constructor.getModifiers()));
            System.out.println(Modifier.isPublic(constructor.getModifiers()));
            System.out.println(Modifier.isPrivate(constructor.getModifiers()));
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,855评论 1 24
  • 前言 现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、...
    戴定康阅读 9,382评论 0 17
  • 现在是八点五十二分,是属于夜晚的时间。天空会如何支配这漫漫长夜,它不语,只剩着几处路灯忽闪着。在这寒冷的冬季,还...
    南醒子阅读 1,639评论 0 0
  • 一 爱是一种不死的欲望。 从赤裸着呱呱落地,还未来得及睁开懵懂的双眼,便先本能的死死拽住出生以来触摸到的第一双手开...
    天璇小兔阅读 13,121评论 106 432
  • (图文无关,图片来自于网络) 妈妈,我想回家 妈妈, 我要回家 不要丢下我,好吗 我要...
    小女兵的故事阅读 3,624评论 0 3

友情链接更多精彩内容