Java反射专题2

来源:互联网 发布:电信网络电视连接不上 编辑:程序博客网 时间:2024/06/06 08:51

-1-获取构造器的方法

(1)Constructor getConstructor(Class

public class Person{    private String name;    private int age;    private Person(String name , int age)    {        this.name = name;        this.age = age;    }    @Override    public String toString()    {        return "Person [ name: " + name + " , age: " + age + "  ]";    }}

在上的类中私有化了一个构造器。

private void showPerson(){    try    {        Class<?> clazz = Class.forName("com.test.zhangtao.activitytest.Person");        Constructor constructor = clazz.getDeclaredConstructor(String.class , Integer.TYPE);        constructor.setAccessible(true);        Object person = constructor.newInstance("Java" , 14);        Log.d(TAG , person.toString());    }    catch (Exception e)    {        e.printStackTrace();    }}

一定不要忘了在调用newInstance方法之前,调用constructor.setAccessible(true)。实际上setAccessible()方法属于AccessibleObject(父类),Method,Constructor,Field都可以调用该方法,从而实现通过反射来调用private方法,private构造器和private成员变量。

-3-通用public修饰的构造器创建对象的方式

public Object newInstance(String className, Object[] args) throws Exception {     Class newoneClass = Class.forName(className);     Class[] argsClass = new Class[args.length];     for (int i = 0, j = args.length; i < j; i++)     {         argsClass[i] = args[i].getClass();     }     Constructor cons = newoneClass.getConstructor(argsClass);     return cons.newInstance(args);}

-4-反射Class对象中一些其它的常用方法

Package getPackage():获取此类的包;

String getName():以字符串形式返回此Class对象所表示的类的名称;

String getSimpleName():以字符串形式返回此Class对象所表示的类的简称;

0 0
原创粉丝点击