簡潔にするために短縮された次の API コードがあります。
public class Vec
{
Vec(int x, int y, int z) {/*implementation*/}
//other fields and methods irrelevant to question and not shown
}
今、リフレクションを使用してそのクラスのコンストラクターを呼び出し、その新しいインスタンスを作成する、上記のクラスとは異なるパッケージにコードを記述しようとしています。これが私が試したことです(以下のコードは私のアプリケーションのmain
メソッドにあります):
Constructor<Vec> c = Vec.class.getConstructor(Integer.TYPE, Integer.TYPE, Integer.TYPE);
c.setAccessible(true);
Vec newVec = c.newInstance(1, 2, 3);
ただし、上記のコードを実行すると、後者のコードの最初の行で例外が発生します。
Exception in thread "main" java.lang.NoSuchMethodException: somePackages.Vec.<init>(int, int, int)
そのコンストラクターがまだ存在しているのに、なぜまだその例外を与えているのですか? oracle-java8-jdk
役立つ場合は、Raspberry Piを使用してこのコードを実行しています。