我创建了一个名为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);
}
}
答案 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构造函数。你必须指定一个。我想这会对你有帮助..