java接口上的克隆方法

时间:2012-09-13 21:18:36

标签: java interface clone

我有以下问题;

我有公共方法clone()的inerface:

public interface Something {
    Something clone();
}

以及

public class SomethingImpl implements Something {

        private Something some;

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

Whenewer我从代码处运行

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

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

我在线程“main”java.lang.NullPointerException上得到Exception Someting some2 = some.clone;

我编写了很多业务逻辑,但直到现在我才遇到克隆的必要性,特别是这种方式。

有人能指出我应该去哪个方向吗?我试着阅读关于这个主题的文章,但是更加困惑。

提前致谢, 英里

2 个答案:

答案 0 :(得分:1)

鉴于你的例子,唯一的方法

public void someMethod(Something some){
    Something some2 = some.clone(); 
}
如果您将null传递给NullPointerException

可以抛出someMethod(Something some)

答案 1 :(得分:0)

方法和字段是两个不同的东西。 clone是一个字段,未定义,因此不存在。 clone()是一种方法。您的意思是Someting some2 = some.clone()吗?

编辑我刚刚看到了您的实际错误(尽管我上面说过的内容仍然需要注意!)。这意味着some必须是null - 您是否可能在省略的代码部分中更改其值?每当收到NullPointerException时,请务必检查。