リフレクションをしているときに面白いものを見つけました。単純なクラスのコンストラクターとその修飾子を取得しようとしました。
public class Test {
public Test(Object... args) {}
}
コンストラクター修飾子を取得するコードは次のとおりです。
Class<?> clazz = Test.class;
Constructor<?>[] ctors = clazz.getDeclaredConstructors();
for (Constructor<?> ctor : ctors) {
int mod = ctor.getModifiers();
/*if not package-private modifier*/
if(mod!=0) {
System.out.println( Modifier.toString(mod)));
}
}
結果は次のとおりです。
public transient
変数パラメーターではなく、配列だけをコンストラクターに渡せば問題ありません。
public class Test {
public Test(Object[] args) {}
}
結果は次のとおりです。
public
コンストラクターの修飾子 (public、protected、private) またはパラメーターの型 (プリミティブまたは参照) に関係なく、同じことが起こります。「一時的」はコンストラクターの有効な修飾子ではありませんが、どうすればよいでしょうか?