获取类的字节码的Class对象。
Posted morefreedomofselfdiscipine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取类的字节码的Class对象。相关的知识,希望对你有一定的参考价值。
获取类的字节码的Class对象。
以Person类为例:
public class Person { private String name; private int age; public String a; protected int b; int c; private int d; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void eat(String str){ System.out.println(str); } @Override public String toString() { return "Person{" + "name=‘" + name + ‘‘‘ + ", age=" + age + ", a=‘" + a + ‘‘‘ + ", b=" + b + ", c=" + c + ", d=" + d + ‘}‘; } }
1.格式:Class 类名称+Class(如personClass)=类名称.class.
例:Class personClass=Person.class.
2.获取类的构造函数。
- 获取有参构造器:Constructor constructor =字节码类.getConstructor(参数类型1.class,参数类型2.class,...........)
例:Constructor constructor =personClass.getConstructor(String.class,int.class)
创建对象:Objct ob=constructor.newInstance("张三",25).
- 获取无参构造器:Constructor constructor =字节码类.getConstructor( .)
例:Constructor constructor =personClass.getConstructor( )
创建对象方法1:Objct ob=personClass.newInstance( ).
创建对象方法2:Objct ob=constructor.newInstance( ).
3.获取类的成员变量。
- 获取所有public修饰的成员变量:Field[ ] field=字节码类.getFields( ).
- 获取某个public修饰的成员变量:Field field=字节码类.getFields(String name ).
修改成员变量例如:
Person p=new Person( );
Field name=personClass.getFields("name" )
name.set(p,"张三");
- 获取任意修饰的成员变量:Field[ ] field=字节码类.getDeclaredFields( ).
- 获取某个成员变量:Field field=字节码类.getDeclaredFields(String name ).
修改成员变量例如:
Person p=new Person( );
Field name=personClass.getFields("name" );
name.setAccessible(true);//忽视修饰符
name.set(p,"张三");
4.获取类的成员方法。
- 获取所有的方法(自己写的和Object类中的):Method[ ] method=字节码类.getMethods( );
- 获取某个无参方法:Method eat=字节码类.getMethod( String 方法名);
使用方法:Method eat=personClass.getMethod(eat);
Person p=new Person( );
eat.invoke(p);
- 获取某个有参方法:Method eat=字节码类.getMethod( String 方法名,参数类型1.class,参数类型2.class,.........);
使用方法:Method eat=personClass.getMethod(eat,String.class);
Person p=new Person( );
eat.invoke(p."吃饭");
- 获取方法名:String name=method.getName( )。
- 获取类名称:String className=字节码类.getName( ).
以上是关于获取类的字节码的Class对象。的主要内容,如果未能解决你的问题,请参考以下文章