Java隐式转换函数参数

时间:2018-07-02 15:32:57

标签: java casting implicit implicit-cast

当将整数作为函数参数传递时,是否可以将整数自动转换为对象?我有这个功能原型:

public void aggiungiA(Nodo x)

Nodo拥有自己的带有整数参数的构造函数。现在,我想做的是:

aggiungiA(5);

带有隐式强制转换。 反正有做吗?

2 个答案:

答案 0 :(得分:4)

在Java中,没有通过构造函数调用进行隐式强制转换。您将必须从调用方或通过重载方法显式调用构造函数:

public class MyClass {
    public void aggiungiA(int i) {
        aggiungiA(new Nodo(i));
    }

    public void aggiungiA(Nodo x) {
        // Do something with X
    }
}

答案 1 :(得分:1)

除了@Mureinik的答案,我想您还来自C ++背景,某些强制转换确实会自动发生。在Java中,情况有所不同-唯一的隐式强制转换为:

  • 在表达式中扩展数字类型。例如,在long x = myLong + inInt中,将myInt强制转换为两个长值相加之前的很长一段时间
  • 与它们的对象相等的原始值。例如,“ int”会自动转换为“ Integer”,而“ boolean”会自动转换为“ Boolean”。这称为自动装箱
  • 装箱的对象可以强制转换回其私有值。例如,可以将'Integer'强制转换为'int'或将'Character'强制转换为'char'。由于这与之前的转换相反,因此称为自动拆箱。