004 方法反射

我们实现一个方法的反射.

User类:

public class User {
    private String name;
    @Override
    public String toString() {
        return "User [name=" + name + "]";
    }
    
    public String say(String str) {
        return name+ " say " + str;
    }
}

我们实现的方法调用:

User user = User.class.newInstance();
        Field name = User.class.getDeclaredField("name");
        //由于这个属性时私有的,需要重新设置访问权限
        name.setAccessible(true);
        name.set(user, "trek");
        //获取方法
        Method method = User.class.getDeclaredMethod("say", String.class);
        //实现方法的调用
        String retval = (String) method.invoke(user, "今天不错");
        System.out.println(retval);

现在我们实现了方法的调用.


 

在这里我们总结一下反射的基本使用结构:

[1]获取Class对象

[2]获得Constructor Field Method 对象

[3]通过获取的这一些反射附属的对象,进行使用.

另外,还有package annotation 等元素.

使用方式也基本一致.

posted @ 2018-03-18 15:32  最爱五仁月饼  阅读(85)  评论(0编辑  收藏  举报