博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打卡-反射基础(二)
阅读量:4694 次
发布时间:2019-06-09

本文共 1763 字,大约阅读时间需要 5 分钟。

反射

1.1获取Class对象的三种方式-(Class 是一个类:一个描述类的类)

  1.通过类名获取      类名.class    

  2.通过对象获取      对象名.getClass()

  3.通过全类名获取    Class.forName(全类名)

1 class Person { 2     String name; 3     int age; 4     public void setName(String name) { 5         this.name = name; 6     } 7     public void setAge(int age) { 8         this.age = age; 9     }10     public Person(String name, int age) {11         super();12         this.name = name;13         this.age = age;14     }15     public Person() {16         super();17     }18 }
构造person类

第一种:

1 Class calzz=Person.class;

第二种:(这种的写法实际意义不大,因为已经清楚了类别,如果传进来的是一个你所不知道的Bbject类,这种方法就可行)

1 Person Person = new Person();2     Class calzz=Person.getClass();

第三种:

1 Class  calzz = Class.forName("com.atguigu.java.fanshe.Person");

2.1Reflection(反射)

是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。

Java反射机制主要提供了以下功能:

  • 在运行时构造任意一个类的对象
  • 在运行时获取任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法(属性)
  • 生成动态代理 
 封装了描述方法的 Method
    描述字段的 Filed
    描述构造器的 Constructor 等属性.

2.2获取方法

第一种:方法数组

getMethods():获取本类以及父类的公共方法或者其接口中所有的公共方法(不包括私有方法)

1 //getMethods()2         Method[] methods = calzz.getMethods();3         for(Method method:methods){4             System.out.print(" "+method.getName());5         }

getDeclareMethods():获取本类的所有方法包括私有方法,但是不包括继承的方法及其接口

1 Method[] methods = clazz.getDeclaredMethods();2         for(Method method:methods){3             System.out.print(" "+method.getName());4         }

第二种:指定方法

//  方法public void setName(String name) {  }        Method method = calzz.getDeclaredMethod("wait", String.class);        System.out.println(method);//  于方法public void setAge(Integer age) {  }        Method method = calzz.getDeclaredMethod("wait", Integer.class);        System.out.println(method);

 

转载于:https://www.cnblogs.com/TuTu-winer/p/10848833.html

你可能感兴趣的文章
第三次作业
查看>>
使用HTML5构建iOS原生APP(2)
查看>>
sqlplus terminators - Semicolumn (;), slash (/) and a blank line
查看>>
省选知识清单/计划列表(咕?)
查看>>
远程桌面(3389)复制(拖动)文件
查看>>
转 lucene3搜索引擎,索引建立搜索排序分页高亮显示, IKAnalyzer分词
查看>>
bootstrap datetimepicker 位置错误
查看>>
9结构型模式之代理模式
查看>>
第二节 整型数据
查看>>
Python 序列
查看>>
Liferay的架构:缓存(第一部分)
查看>>
初识B/S结构编程技术
查看>>
方法、hadoop源码之JobQueueTaskScheduler-by小雨
查看>>
页面重构总结
查看>>
IO 函数
查看>>
Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备
查看>>
JSP页面间传递参数
查看>>
VSNETcodePrint 2005 & SQL ServerPrint 2005
查看>>
java数组基本操作
查看>>
String的indexOf()用于获取字符串中某个子字符串的位置
查看>>