0
class Do{
    void doit(){
        ClassA a = new ClassA();
        a.doSomething(>>>CODE HERE<<<);
    }
}
interface InterfaceA{
    void doSomethingElse();
}
class ClassA{
    void doSomething(InterfaceA f){
    }
}

質問: 上記のコードを完成させて、doit メソッドが「Hello world!」を出力するようにします。示されているように括弧の間にのみコードを追加し、他は何も変更しません。

誰かがこれを解決するのを手伝ってくれませんか? 私はまだ手がかりがありません。昨日のクイズで空白のままにしました:((。助けてくれてありがとう

4

3 に答える 3

1

OK、クイズの質問が次のようになっていれば:

class Do{
    void doit(){
        ClassA a = new ClassA();
        a.doSomething(>>>CODE HERE<<<);
    }
}
interface InterfaceA{
    void doSomethingElse();
}
class ClassA{
    void doSomething(InterfaceA f){
        // NOTE THIS CHANGE!
        f.doSomethingElse();
    }
}

次に、これを変更できます。

a.doSomething(>>>CODE HERE<<<);

これに:

a.doSomething(new InterfaceA() {
    @Override public void doSomethingElse() {
        System.out.println("Hello world!");
    }
});

そうでなければ、答えは他の答えが言っているように奇妙なものです。

于 2013-10-24T01:44:43.290 に答える
0

これがクイズに対する意図した答えかどうかはわかりませんが、これはうまくいくはずです:

class Do{
    void doit(){
        ClassA a = new ClassA();
        a.doSomething(null); System.out.println("Hello world!");
               //    ^ starting paren           closing paren ^
    }
}
interface InterfaceA{
    void doSomethingElse();
}
class ClassA{
    void doSomething(InterfaceA f){
    }
}

基本的に、2 つの行を同じ行に置くだけで、インターフェースの実装を提供する必要はありません。追加された唯一のコードはnull); System.out.println("Hello world!"

に触発: http://xkcd.com/327/

これはおそらく、技術的なクイズに対するなぞなぞのような答えです...ただし、先生があなたを楽しませようとしている場合を除きます.

于 2013-10-24T01:41:55.567 に答える