无法通过在Java中键入数字来显式设置Long属性

oli*_*i.G 1 java types

我创建了一个包含带有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)

Jea*_*rin 7

尝试

myInstance.setId(15L);
Run Code Online (Sandbox Code Playgroud)

当你使用long newID = 17;它时,它知道它需要很长时间,当你这样做时myInstance.setId(15);,它不会,所以你需要明确.