匿名クラスは、独自の型パラメータを宣言できますか?Javaでは、匿名クラスが独自の型パラメータを宣言できますか?
答えて
No.
いいえJava言語仕様を網羅クラスインスタンス生成式に可能な引数を定義:
をクラスインスタンス生成式 が おそらく型引数、続いてインスタンス化されるクラスを指定 (インスタンス化されているクラスが ジェネリック(§8.1.2))、コンストラクタへの実際の値 の引数のあとに(おそらく空の )リストが続きます。 明示的な型 引数をコンストラクタ自体に渡すことも可能です (汎用コンストラクタの場合は (8.4.4)))。 コンストラクタへの型引数は、すぐに キーワードnewに続きます。型インスタンス引数 のいずれかがクラスインスタンス作成 式で使用されている場合は、ワイルドカード型引数 (§4.5.1)がコンパイル時に エラーです。クラスインスタンス生成 式は二つの形式があります。
修飾されていないクラスインスタンス生成 式を新しいキーワード で始まります。クラスのインスタンスを トップレベル(§7.6)、メンバー(§8.5、§9.5)、 ローカル(§14.3)であるかどうかにかかわらず、 作成式を使用して、 クラスのインスタンスを作成することができます。 )または匿名クラス (§15.9.5)。
修飾クラスインスタンスの作成 式は、プライマリで始まります。 修飾クラスインスタンスの作成 式を使用すると、内部メンバークラスの インスタンスとその匿名サブクラス インスタンスの作成が可能になります。
あなたは、スーパークラスやインターフェイス、またはコンストラクタの実際の型パラメータを指定することができながら、だから、あなたは新しいものを定義することはできません。新しいタイプのパラメータをクラス本体から使用できるため、これはいくつかのまれなケースで役に立ちますが、簡単な回避策があります:
- クラスインスタンス作成式を汎用メソッドでラップします(匿名クラスは、囲むメソッドの型パラメータが表示されます)
- パラメータを使用する方法がある、という名前のクラス
良い回避策。 +1 –
を使用しかし。
匿名クラス内の任意の宣言されたメソッドを使用することができ、外側クラス最終
次のコードの
- 特性は、それを証明する
public class Foo { private String value = "Hello "; public void anonymousTest(final boolean asc) { final String world = "world"; new Comparable<String>() { @Override public int compareTo(String o) { System.out.println(value + world); int cmp = value.compareTo(o); return asc ?cmp :0-cmp; } }; } }
この例が役立つことを願っています。
- 1. C#匿名型宣言
- 2. より美しいTypeScriptの匿名クラス宣言ですか?
- 3. Java:独自のサブクラスを継承するクラスの型パラメータ
- 4. 関数宣言のパラメータ名(型なし)
- 5. 匿名クラスのプロパティを宣言する方法
- 6. 多くの同一の匿名クラスを宣言すると、Javaのメモリが浪費されますか?
- 7. 宣言できませんKubernetes API型宣言の型式
- 8. クラス宣言とインスタンス宣言の型キーワード
- 9. javaの型パラメータのクラス名は?
- 10. Switch宣言で型宣言を行うことはできますか?
- 11. @ Html.RadioButtonFor:無効な匿名型メンバー宣言子
- 12. Javaインター型宣言
- 13. ハスケル独自のインスタンス型クラス
- 14. Javaで宣言されたクラスからプリミティブの型を取得するには?
- 15. HttpServletで独自のメソッドを宣言するのはスレッドセーフですか?
- 16. パラメータ内の型宣言型アサーション
- 17. 匿名オブジェクトでメソッドを宣言することは不可能ですか?
- 18. Java、JNI、クラス宣言
- 19. Javaでの匿名クラスのシリアライズ
- 20. クラス宣言で型を定義していますか?
- 21. 匿名型を選択することはできますか?
- 22. パラメータは宣言されていない型ですか?
- 23. Kotlinで生の型を宣言するには? Javaでは
- 24. 変数はjavaでクラス名のみを使用して宣言できますか?
- 25. 匿名クラスJavaの質問
- 26. Windows dllが独自のファイル名を取得できますか?
- 27. 拡張時に独自の型を反復するJavaクラス
- 28. TypeScriptは、.jsファイルが独自の.d.ts宣言と一貫していることを確認できますか?
- 29. 型エイリアス宣言のHaskell型クラス
- 30. マップとしてクラス名を宣言できないのはなぜですか?
質問を明確にするために(疑似)コードを表示できますか? –
30秒以内にこれをテストするコードを書いて、あなた自身の質問に答えることができます。 –
私はそれが可能だとは思わないので、それのための構文はありません。しかし、何かのように: 'MyInterface m = new MyInterface() {/ * body * /};' –