1

我创建了一个类,其中包含一个带有设置器的 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.");
    }

}

在其他地方,我只是想:

MyClass myInstance = new myClass();
myInstance.setId(15);

构建错误提示我尝试这样的技巧:

long newID = 17;
myInstance.setId(newID);

...这行得通。唯一奇怪的是,我在 NetBeans 中打开了一个不同的项目,并且在相同的情况下没有编译错误(排除任何“外部”影响或不需要的交互非常安全,就像我的代码片段一样简单) .

这可能是编译器设置的事情吗?我现在想更多地了解发生了什么以及为什么我不能使用myInstance.setId(15)

4

2 回答 2

7

尝试

myInstance.setId(15L);

当您使用时,long newID = 17;它知道它期待很长时间,当您使用时myInstance.setId(15);,它不会,因此您需要明确。

于 2013-04-30T19:58:35.253 回答
1

如果您完全愿意通过,int那么只需进行此编辑。

int a=15;
myInstance.setId((long)a);

正如Zim-Zam O'Pootertoot所说,默认情况下数字是 an int,因此您需要将其显式转换为 a long

于 2013-04-30T20:45:13.357 回答