検索

ホームページ  >  に質問  >  本文

java - 如何访问protected静态内部类?

如何访问一个受保护的静态内部类?

public class A{
    protected static class AInner{
        public void test(){
        }
    }
}
public class B extends A{
    public void hello(){
        //怎样才能访问AInner中的test方法呢?
    }
}

为什么当A和B在不同包中时,new AInner().test()会编译报错呢?
而当A和B在同一个包中,却不会报错?

高洛峰高洛峰2887日前323

全員に返信(2)返信します

  • PHP中文网

    PHP中文网2017-04-17 17:50:11

    A B A.AInner のコンストラクターがデフォルトのコンストラクターであり、 のデフォルトのアクセス レベルにより、同じパッケージ内のサブクラスが を使用できるため、パッケージが異なるとエラーが報告されます。
    クラス A を変更できれば、移植された、またはパブリック レベルのコンストラクターを作成できます。

    リーリー

    Aクラスを変更しない場合は、これを見てください。
    アクセス可能なデモを書きました。

    構造

    カテゴリー A:

    リーリー

    カテゴリー B:

    リーリー

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:50:11

    なぜですか? protected可視範囲は、パッケージおよび継承クラス内で可視となる可視範囲によって決まります。
    アクセス方法は?強制的にアクセスする必要がある場合は、リフレクションを通じて可視性を変更するだけです。

    返事
    0
  • キャンセル返事