no way to enforce this at compile timeがあることは知っていますが、これは実行時にリフレクションを使用する方法があることを望んでいました。java:実行時にサブクラスにargコンストラクタを適用しない
0
A
答えて
2
あなたは反射して、それを明白な方法を行うことができます:
public class Superclass {
public Superclass() {
try {
// get the constructor with no arguments
this.getClass().getConstructor();
} catch(ReflectiveOperationException e) {
throw new RuntimeException("Subclass doesn't have a no-argument constructor, or the constructor is not accessible", e);
}
}
}
(それが公開されている場合getConstructor
だけコンストラクタを返すことに注意してください。あまりにもプライベートコンストラクタを許可するように、getDeclaredConstructor
を使用します)。
+0
ReflectiveOperationException!それは新しい(そして非常に高く評価された)。 – Thilo
関連する問題
- 1. Javaはコンストラクタのサブクラスからのみコードを実行します
- 2. Javaのサブクラスのコンストラクタ
- 3. 抽象コンストラクタを実行してからサブクラスにキャストする
- 4. 起動時にコンストラクタの値が適用されない
- 5. 実行時にWPFスタイルが適用されない
- 6. Eclipseは実行時にGroovyスクリプトをJavaクラスにコンパイルしない
- 7. javaのコンストラクタの後にコードを実行していますか?
- 8. コンストラクタを実行していないHttpClient
- 9. Java - サブクラスを実行中にスーパークラスが実行されています
- 10. 実行時にEclipse Java EEがCSSファイルを更新しない
- 11. multi-argコンストラクタの明示的なキーワード?
- 12. Java - Jackson適切なコンストラクタを処理しない注釈
- 13. Entity Frameworkは実行時にマイグレーションを適用します
- 14. サブクラスがJavaでコンストラクタを定義しないとどうなりますか?
- 15. SpringとScala - Function1のコンストラクタ - arg
- 16. 実行時にjQueryにプラグインを適用する
- 17. 実行時に属性コンストラクタはいつ実行されますか?
- 18. Java実行時実行
- 19. 抽象Spring Beanをコンストラクタ-Argとして使用する
- 20. 実行時にOS用のJavaメモリを解放します。
- 21. 実行時にRubyを生成するサブクラス
- 22. 実行時にJavaファイルをコンパイルしてClassNotFoundExceptionを使用してください。
- 23. アスペクトを実行時に実行しない(Spring 3、AspectJ)
- 24. C - 実行時にasmパッチを適用する
- 25. Perl6:サブクラスのコンストラクタ
- 26. サブクラスのコンストラクタ
- 27. サブクラスは常にスーパークラスのデフォルトのコンストラクタを使用しますか?
- 28. アプリケーションを再起動せずに、実行時にSpringプロファイルを適用します。
- 29. Scala - コンストラクタ引数の実行時の型でコンストラクタを選択
- 30. 実行時にEMRでHDFSパスを使用しない
これは何ですか?あなたのプログラムはランタイム例外を伴ってエラーになりますか?コンストラクタが見つからず、あなたがそれを呼び出そうとした場合、どうなるでしょうか? – Thilo
何かあれば、(ビルド中にFindbugsや単体テストを実行するのと同じように)クラス構造を検証できるカスタムビルドステップ(アノテーションでトリガされる可能性があります)を調べることができます。 http://stackoverflow.com/a/803433/14955 – Thilo
この質問には疑問はありません。おそらくあなたはそれをする方法を尋ねたいですか? – immibis