Così, abbiamoImpossibile accedere metodo protetto dalla classe figlia
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();
}
Questo non mi permette di accedere b.f()
, dicendo che B.f()
è nel campo di applicazione protetta, tuttavia f
era protetto da A
, e poiché C
estende A
, dovrebbe anche ottenere l'accesso a f()
.
perché non creare nuova istanza come: A = B (A) nuova B(); ? – Dmitry
B è disponibile solo in fase di esecuzione. Se vuoi davvero sapere, B è 'com.android.okhttp.HttpsHandler', e A è' URLStreamHandler' –
Puoi risolvere il tuo caso tramite riflessione, ma sarebbe più utile se hai postato il tuo problema * originale *. Quale metodo di 'HttpsHandler' stai cercando di chiamare e perché ne hai bisogno. Vedi il [problema XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Prendi in considerazione l'idea di aprire una nuova domanda con il tuo problema originale. –