-1

次の問題があります。

public メソッド clone() とのインターフェイスがあります。

public interface Something {
    Something clone();
}

そしてまた

public class SomethingImpl implements Something {

        private Something some;

    public Something clone() {
        return some.clone();
    }
}

どこかのコードから実行するたびに

...
Something i =  new SomethingImpl();
...
// do something on i
...
someMethod(i);
...

public void someMethod(Something some){
    Something some2 = some.clone(); 
  }

Someting some2 = some.clone; 行でスレッド「メイン」java.lang.NullPointerException で例外が発生します。

私は多くのビジネスロジックをプログラムしましたが、特にこの方法でクローン作成の必要性に遭遇したことはありません.

誰かが私が行くべき方向を教えてくれますか? このトピックに関する記事を読もうとしましたが、さらに混乱しました。

前もってありがとう、マイル

4

2 に答える 2

1

あなたの例を考えると、唯一の方法

public void someMethod(Something some){
    Something some2 = some.clone(); 
}

NullPointerExceptionに null を渡すと、 is をスローできますsomeMethod(Something some)

于 2012-09-13T21:26:25.700 に答える
0

メソッドとフィールドは2つの異なるものです。cloneはフィールドであり、定義されていないため、存在しません。clone()メソッドです。意味Someting some2 = some.clone()ですか?

編集私はちょうどあなたの実際のエラーを見ました(私が上で言ったことはまだ注意されるべきですが!)。これは、そうであるsome必要があることを意味しますnull-おそらく、省略したコードの部分でその値を変更していますか?を受け取ったときは、必ずそれを確認してくださいNullPointerException

于 2012-09-13T21:23:23.363 に答える