java 反射 getclass_使用java反射的第二种方式对象的getClass()方法

使用java反射的第二种方式对象的getClass()方法

Person类,因为要声明对象所以将构造方法public

package com.pb.Reflect.classinfo;

public class Person {

private String name;

private String gender;

private int age;

public Person() {

//

}

public Person(String name, String gender, int age) {

super();

this.name = name;

this.gender = gender;

this.age = age;

}

//getter、和setter方法

private String getName() {

return name;

}

private void setName(String name) {

this.name = name;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String toString(){

return "姓名:"+name+"年龄: "+age;

}

}

使用反射:

package com.pb.Reflect.classinfo;

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import javax.swing.JOptionPane;

/*

* 通过用户输入类的全路径,来获取该类的成员方法和属性

* Declared获取全部不管是私有和公有

* 1.获取访问类的Class对象

* 2.调用Class对象的方法返回访问类的方法和属性信息

*/

public ReflectDemo(Person p){

Class cla=p.getClass();

//利用Class对象的cla的自审,返回方法对象集合

Method [] method=cla.getDeclaredMethods(); //返回所有的方法

System.out.println("========获取方法信息============");

for (Method meth : method) {

//遍历method数组,并输出方法信息

System.out.println(meth.toString());

}

System.out.println("========获取出方法信息结束============");

//获取属性利用Class对象的cla的自审,返回成员属性对象集合

Field [] field=cla.getDeclaredFields();

System.out.println("========获取成员属性信息============");

for (Field f : field) {

System.out.println(f.toString());

}

System.out.println("========获取成员属性信息结束============");

//获取属性利用Class对象的cla的自审,返回构造方法集合

Constructor [] constructor=cla.getDeclaredConstructors();

System.out.println("========获取成员构造方法信息============");

for (Constructor constru : constructor) {

System.out.println(constru.toString());

}

System.out.println("========获取成员构造方法信息结束============");

}

}

测试类

package com.pb.Reflect.classinfo;

public class TestReflection {

public static void main(String[] args) {

Person p=new Person();

ReflectDemo rd=new ReflectDemo(p);

}

}

========获取方法信息============

public java.lang.String com.pb.Reflect.classinfo.Person.getGender()

public void com.pb.Reflect.classinfo.Person.setGender(java.lang.String)

public int com.pb.Reflect.classinfo.Person.getAge()

public void com.pb.Reflect.classinfo.Person.setAge(int)

public java.lang.String com.pb.Reflect.classinfo.Person.toString()

private java.lang.String com.pb.Reflect.classinfo.Person.getName()

private void com.pb.Reflect.classinfo.Person.setName(java.lang.String)

========获取出方法信息结束============

========获取成员属性信息============

private java.lang.String com.pb.Reflect.classinfo.Person.name

private java.lang.String com.pb.Reflect.classinfo.Person.gender

private int com.pb.Reflect.classinfo.Person.age

========获取成员属性信息结束============

========获取成员构造方法信息============

public com.pb.Reflect.classinfo.Person()

public

com.pb.Reflect.classinfo.Person(java.lang.String,java.lang.String,int)

========获取成员构造方法信息结束============

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值