Java的反射中一些重要的方法

来源:本站
导读:目前正在解读《Java的反射中一些重要的方法》的相关信息,《Java的反射中一些重要的方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Java的反射中一些重要的方法》的详细说明。
简介:  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Java中有个Object 类,是所有Java 类的继承根源,其内声明了数个应该在所有Java 类中被改写的方法:hashCode、equals、clone、toString、getClass等。其中getClass返回一个Class 对象。Class对象十分特殊。他是Java中所有类的实例,借助它可以实现对一个对象的操作。

实例

1. 准备工作

public class Person {

private String name;

private String age;

private void shot{

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

}

protected void shot1 {

System.out.println("111");

}

public String getAge {

return age;

}

public String getName {

return name;

}

public void setAge(String age) {

this.age = age;

}

public void setName(String name) {

this.name = name;

}

}

2. 创建Class对象

Person person = new Person;

Class<?> class2 = person.getClass;

Class<?> class1 = Class.forName("test0118.testR.Person");

Class<?> class3 = Person.class;

3. 对对象属性进行操作

获取类的属性

getFields只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.

getDeclaredFields能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法

Field fields = class1.getDeclaredFields;

Field fields2 = class1.getFields;

for (Field field : fields) {

System.out.println(Modifier.toString(field.getModifiers) + field.getName);

}

for(Field field:fields2){

System.out.println(Modifier.toString(field.getModifiers)+field.getName);//由于Person类中并没有公有字段,所以该循环不输出任何值

}

/**

输出:

privatename

privateage

*/

获取类属性的修饰符

上述代码中有一个方法Modifier.toString(field.getModifiers)即是获取该属性的修饰符,field.getModifiers返回一个int值,将该值转化为对应的描述要用到Modifier.toString方法。

对类的属性进行操作

Field field = class1.getField("name");

Object object = class1.newInstance;

field.setAccessible(true);//打破了封装的特性,允许对私有属性直接进行操作

field.set(object, "123");

System.out.println(field.get(object));

获取类的方法

getMethods返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法。

getDeclaredMethods对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。当然也包括它所实现接口的方法。

Method methods = class1.getDeclaredMethods;

Method methods2 = class1.getMethods;

获取方法的参数和返回值的类型

method.getParameterTypes:获取方法参数类型,返回Class<?>数组

method.getReturnType:获取方法返回值类型,返回Class<?>对象

Class<?> ty = method.getParameterTypes;

Class<?> rty = method.getReturnType;

Object object = class1.newInstance;

Method method = class1.getMethod("setName", Class.forName("java.lang.String"));

method.invoke(object, "123123");

Method method2 = class1.getMethod("getName");

System.out.println((String) method2.invoke(object));

System.out.println(method.getReturnType);

提醒:《Java的反射中一些重要的方法》最后刷新时间 2024-03-14 01:01:23,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Java的反射中一些重要的方法》该内容的真实性请自行鉴别。