Więc mamynie można uzyskać dostępu do metody chroniony przed klasą dziecięcej
public abstract class A{
protected abstract String f();
}
public class B extends A{
protected String f(){...}
}
public class C extends A{
protected String f(){
A b = (A) Class.forName("B", true, getClass().getClassLoader()).newInstance();
return b.f();
}
To nie pozwala mi na dostęp b.f()
, mówiąc, że B.f()
znajduje się w chronionym zakresie, jednak f
był chroniony przez A
i od C
rozszerza A
, powinien również uzyskać dostęp do f()
.
Dlaczego nie stworzyć nową instancję jak: A, b = (A) new B(); ? – Dmitry
B jest dostępne tylko w czasie wykonywania. Jeśli naprawdę chcesz wiedzieć, B to 'com.android.okhttp.HttpsHandler', a A to' URLStreamHandler' –
Możesz rozwiązać swoją sprawę za pomocą refleksji, ale byłoby bardziej pomocne, gdybyś opublikował swój * oryginalny * problem. Którą metodą 'HttpsHandler' próbujesz wywołać i dlaczego tego potrzebujesz. Zobacz [problem XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Rozważ otwarcie nowego pytania z pierwotnym problemem. –