class Target {
String name;
int amount;
double weight;
Target (String targetName, int targetAmount, double targetWeight) {
name = targetName;
amount = targetAmount;
weight = targetWeight;
}
}
完全任意的构造函数,它不是更大的东西的一部分。
假设我在某处创建了这个实例 如果我输入错误类型的参数
Target object1 = new Target("Apple", 4.32, "who knows?")
如何让构造函数检查参数的类型是否正确,如果不是,请再次声明object1
。
在构造函数中编写while循环是否可以接受? (只要类型不正确并使用instanceof
检查并要求重新输入)
另一个想法是创建一个单独的方法来处理instanceof
检查,但参数有不同的类型,有没有办法返回参数的声明类型?
或者我完全过度思考这个问题并且有更简单的方法吗?
答案 0 :(得分:3)
您不需要,因为Java编译器在编译时会给您一个错误。它是强类型的,意味着变量只有一种类型和一种类型。
您提供的代码无法编译
答案 1 :(得分:2)
首先,如果给构造函数提供错误的参数,java编译器将返回错误。回答你的第二个问题,可以在构造函数中使用while循环。
答案 2 :(得分:1)
Target object1 = new Target("Apple", 4.32, "who knows?")
会给你一个编译时错误。在编译期间,方法调用是已解析,但实际调用是在运行时完成的。
因此,一旦遇到上述语句,编译器会检查是否存在能够接受这些参数的构造函数,如果否,则会出现错误
如何让构造函数检查参数的类型是否正确以及是否不是,请求再次声明object1。 -
你不应该这样做。在new is called
时调用构造函数,即在创建对象时,如果参数不匹配,则构造函数本身不会被调用。使用静态助手方法(如果需要)。
在构造函数中编写while循环是否可以接受? (使用instanceof检查,只要类型不正确并要求重新输入)
您不应在构造函数中包含任何业务逻辑。这就是全部。 instanceof
检查可能可接受,具体取决于具体情况(具体情况)
我完全过度思考这个问题,并且有一种更简单的方法 - 是的。不要使用无效的参数调用构造函数。不要将业务逻辑放入其中。验证逻辑是可以接受的。