我在我的代码中使用Object超类,但它吐出错误构造函数(int int)undefined

时间:2017-07-20 06:01:05

标签: java object

我创建了一个名为Huh2的类。然后我定义了对象类型。它吐出一个错误说:"构造函数Huh2(int,int)在运行时未定义"

这是我的代码:

public class Huh2 {

    Object one;
    Object two;
    String trip;

    public Huh2(Object a, Object b)
    {
        one = a;
        two = b;
    }

    public void setone(Object a) {one=a;}
    public void setTwo(Object b) {two=b;}
    public Object getOne() {return one;}
    public Object getTwo() {return two;}
    public String getS() {return trip;}

    public static void main(String[] args) {
        Huh2 ii = new Huh2(1,2);
        Object i = ii.getTwo();
        System.out.println(i);
    }
}

4 个答案:

答案 0 :(得分:2)

如果你使用Object类作为普通原始数据类型然后它会抛出错误,因为它是与参数兼容的无效类型,使用Object的包装类大小写

答案 1 :(得分:1)

这就是原因:

Huh2 ii=new Huh2(1,2);

编译器无法将原语提升为等效的包装类

传递基元的原始对象

Huh2 ii=new Huh2(new Integer(1), new Integer(2));

答案 2 :(得分:1)

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The constructor Huh2(int, int) is undefined

at Huh2.main(Huh2.java:20)

您似乎正在使用Java 1.4进行编译(可能在IDE / maven中将合规性级别设置为1.4)。如果您使用较新版本进行编译,则由于Java 5中引入了自动装箱功能,因此不会出现问题。以下是The Java Tutorial

的简短说明
  

将原始值(例如int)转换为对象   相应的包装类(Integer)称为autoboxing。该   当原始值为:

时,Java编译器应用自动装箱      

作为参数传递给期望对象的方法   相应的包装类。分配给变量的   相应的包装类。

答案 3 :(得分:-2)

将此添加到您的班级

public Huh2(){
}

如果编写任何构造函数,则编译器不提供默认的no-arg构造函数。你必须指定一个。我想这会对你有帮助..