異なるパッケージからプライベートクラスのオブジェクトを作成するJavaリフレクション、

概要 :

私はプライベートクラスIパッケージ(パッケージcom.example)の別のクラスの外部からのオブジェクトを作成する必要があること(ある両端キューを)持っています

package com.example;

final class Deque {

    public Deque() {}

}

リフレクションを使用して、どのように私は、パッケージcom.example内にないクラスから、タイプcom.example.Dequeのオブジェクトを作成するに行きますか?

ステファンHogenboom:

それはトリッキーであり、通常これを行うにはお勧めしませんが、あなたは作成してのオブジェクトことができDeque、パッケージを外部に。あなたががそれにタイプ両端キューの適切な参照を持つことができる場合、私は知りません。

package com.demo;

final class NotADeque {

    public NotADeque() {}

    public static void main(String[] args) throws ClassNotFoundException, 
        NoSuchMethodException, IllegalAccessException, InvocationTargetException, 
        InstantiationException {
      Class<?> c = Class.forName("com.example.Deque");
      Constructor<?> constructor = c.getDeclaredConstructor();
      constructor.setAccessible(true);//Make the constructor accessible.

      Object o = constructor.newInstance();
      System.out.println(o);
    }
}

これは、のインスタンスを作成しますDequeが、とObjectそれへの参照。また、これを実行しながら、スローされる可能性がありますチェック例外の量を見て、これは非常に薄っぺらなアプローチです。詳細については確認してくださいこの質問を

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=236095&siteId=1