当前位置: 代码迷 >> J2SE >> java中protected使用有关问题
  详细解决方案

java中protected使用有关问题

热度:91   发布时间:2016-04-24 12:31:45.0
java中protected使用问题
protected修饰的方法属性不在同一个包中是如何访问的?给个例子说明下

------解决方案--------------------
Java code
        Class clazz = Test.class;        Method method = clazz.getDeclaredMethod("test",new Class[0]);//无参数方法test        method.setAccessible(true);        Object returnValue = method.invoke(clazz.newInstance(),new Object[0]);
------解决方案--------------------
不同的包只有子类才能访问,所以,所以你的类不是继承该protected属性的父类,如果该父类有公开构造方法,可以通过匿名子类来访问,如果没有公开构造方法,可以通过反射来访问

Java code
package a;class A {    protected void testa() {        System.out.println("A");    }}package b;class B extends A {    public void testb() {        testa(); //子类可以直接访问    }}package c;class C {    public void testc() {        new A() { //匿名子类访问            {testa();}        };    }}package d;class D {    public void testd() {        try {            A a = new A();            Class<?> c = A.class();            Method m = c.getDeclaredMethod("testa"); //反射访问            m.setAccessible(true);            m.invoke(a);        } catch (Throwable e) {        }    }}
  相关解决方案