我创建了一个包含带有setter的Long属性的类.当尝试使用setter将值设置为某个随机数时,Idea告诉我实际的参数int不能通过方法调用转换转换为Long.
这是我的班级:
public myClass() {
private Long id;
public Long getId() {
return this.id;
}
public Long setId(Long id) {
if(this.id == null)
this.id = id;
else throw new InvalidOperationException("Can't set more than once.");
}
}
Run Code Online (Sandbox Code Playgroud)
而在其他地方,我只是想:
MyClass myInstance = new myClass();
myInstance.setId(15);
Run Code Online (Sandbox Code Playgroud)
构建错误暗示我尝试这样的技巧:
long newID = 17;
myInstance.setId(newID);
Run Code Online (Sandbox Code Playgroud)
...... 有效.唯一奇怪的是,我在NetBeans中打开了一个不同的项目,并且在相同的情况下没有编译错误(并且排除任何"外部"影响或不需要的交互是非常安全的,这一切都像我的代码片段一样简单) .
这可能是编译器设置的事吗?我现在想了解一下发生了什么,为什么我不能使用它myInstance.setId(15)
尝试
myInstance.setId(15L);
Run Code Online (Sandbox Code Playgroud)
当你使用long newID = 17;它时,它知道它需要很长时间,当你这样做时myInstance.setId(15);,它不会,所以你需要明确.
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |