Java 访问内部隐藏抽象类以获取状态更新

Java 访问内部隐藏抽象类以获取状态更新,java,android,reflection,abstract,Java,Android,Reflection,Abstract,我想调用一个私有方法,该方法接受抽象类参数,并且该抽象类是隐藏的(我不能直接访问它)。每当抽象类的方法被其他类调用时,我需要得到更新 我推荐的班级是: public class A{ private void method(AbstractClassA object){ ... } // please note below class is hidden. I can not do A.AbstractClassA . I have to access it using reflect

我想调用一个私有方法,该方法接受抽象类参数,并且该抽象类是隐藏的(我不能直接访问它)。每当抽象类的方法被其他类调用时,我需要得到更新

我推荐的班级是:

public class A{

  private void method(AbstractClassA object){ ... }

 // please note below class is hidden. I can not do A.AbstractClassA . I have to access it using reflection unless there is any other way

  public abstract class AbstractClassA {

  //I am interested in getting this int whenever someone else calls the progressUpdate

       public void progressUpdate(int update);
   }
}
我正在尝试这样访问:

public class myClass{

    Class<?> abstractClass =  Class.forName("<package>.A$AbstractClassA");
    A a = new A();
    Method someMethod = a.getDeclaredMethod("method", (Class[])null);
    someMethod.setAccessible(true);
    someMethod.invoke(a, <something which I don't know>); //how to pass paramerts here so that I get all callbacks whenever progressUpdate is called by someone else and "update" parameter is changed.


}
公共类myClass{
Class abstractClass=Class.forName(“.A$AbstractClassA”);
A=新的A();
方法someMethod=a.getDeclaredMethod(“方法”,(类[])null);
someMethod.setAccessible(true);
invoke(a,
public类子类a扩展了{
私有子条款摘要子条款;
公共子条款(){
this.subassa=新的subassabstracta();
}
公共类子类抽象扩展了抽象{
@凌驾
公共void progressUpdate(int更新){
子条款本进度更新(更新);
}
}
公共void progressUpdate(int更新){
//用int做事情
}
公共方法(){
clazz类=A类;
方法方法=clazz.getDeclaredMethod(“方法”);
方法setAccessible(true);
调用(本,子类);
}
}

您如何创建抽象类的实例?您不应该这样做…我想创建隐藏内部抽象类的具体类。我应该如何做?我认为您应该从
A
扩展,使用它的子类创建
AbstractClassA
的实例(如果需要,可以创建一个匿名子类,但也可以创建一个扩展自该子类的内部类),然后使用反射调用私有方法。@EpicPandaForce您能举个例子吗
public class SubClassA extends A {
    private SubClassAbstractA subClassA;

    public SubClassA() {
        this.subClassA = new SubClassAbstractA();
    }

    public class SubClassAbstractA extends AbstractA {
        @Override
        public void progressUpdate(int update) {
            SubClassA.this.progressUpdate(update);
        }
    }

    public void progressUpdate(int update) {
        //do things with int
    }

    public void someMethod() {
        Class<?> clazz = A.class;
        Method method = clazz.getDeclaredMethod("method");
        method.setAccessible(true);
        method.invoke(this, subClassA);
    }
}