java中Long类型的一个小bug

代码:

public class Per {
          
   
    Long target;

    public Long getTarget() {
          
   
        return target;
    }

    @Override
    public String toString() {
          
   
        return "Per{" +
                "target=" + target +
                };
    }

    public void setTarget(Long target) {
          
   
        this.target = target;
    }

    public static void main(String[] args) throws InterruptedException {
          
   
        Per p = new Per();
        p.setTarget(3 > 4 ? 100L : 0);
        System.out.println(p.toString());
    }
}

我们看代码可以看到,target属性时Long类型的,在使用setter进行赋值的时候,正常情况下,传入的值只能是Long类型的,但是如果你使用了三段表达式,那么可以将Integer类型的值也传进去,但是其他类型(float、double等)的好像的不行。按照上面那样写,不会报错,程序会自动将int类型的数据转成Long类型的数。

经验分享 程序员 微信小程序 职场和发展