0

オブジェクトの作成中にメソッドを宣言することは可能ですか?私はJavaで次のコード行に出くわしました:

public static void main(String[] args) {
        Comparator<String> comparator = new Comparator<String>() {
            public int compare (String s1, String s2) {
                return s1.compareToIgnoreCase(s2);
            }
        };
}

comparatorそして、オブジェクトを作成している間、コードはインターフェースを実装するためのメソッドを追加しているように見えComparator<T>ます。インスタンスを作成するときにメソッドを追加することは常に可能ですか、それとも特にJavaインターフェイスに関連するものですか?

助けてくれてありがとう!

4

2 に答える 2

1

はい、できます。それは匿名クラスと呼ばれます。これは、メソッド内に新しいクラスを作成しているが、名前を付けていないことを意味します(そのため、匿名です)。Comparator<String>あなたの例では、この匿名クラスはインターフェースを実装しておりcompare、その本体でメソッドを定義する必要があります。これがコードが機能する理由です。

于 2012-10-19T03:28:55.063 に答える
1

これはあなたが思っていることではありません。

続くものnew Comparator<String>()は匿名の内部クラスです。これは、匿名クラスがComparatorクラスの実装者であることを意味します。

あなたは2つのoprionを持つことができます:

1. AnyClass object = new AnyClass() { // anonymous inner class starts here.
// In this case , inner class is a sub class of AnyClass.
};// ends here
2. AnyInterface anyInterface = new AnyInterface() { //anonymous inner class starts here.
// In this case , inner class is implementer of AnyInterface.
}; // ends here.
于 2012-10-19T03:30:13.277 に答える