我有以下问题;
我有公共方法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;
我编写了很多业务逻辑,但直到现在我才遇到克隆的必要性,特别是这种方式。
有人能指出我应该去哪个方向吗?我试着阅读关于这个主题的文章,但是更加困惑。
提前致谢, 英里
答案 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
时,请务必检查。