构造函数中的输入类型不正确
Incorrect type of input in constructor
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
检查,但是参数有不同的类型,有没有办法 return 声明参数的类型?
或者我是不是想多了,还有更简单的方法吗?
你不需要,因为 Java 编译器会在编译时给你一个错误。它是强类型的,这意味着一个变量只有一种类型并且只有一种类型。
您提供的代码无法编译
首先,如果你给构造函数提供了错误的参数,java编译器会return出错。回答你的第二个问题,在构造函数中使用 while 循环是可以接受的。
Target object1 = new Target("Apple", 4.32, "who knows?")
会给你一个 编译时间 错误。方法调用在编译时 resolved 但实际调用是在运行时完成的。
因此,一旦遇到上述语句,编译器会检查是否存在能够接受这些参数的构造函数,如果没有,然后你得到一个错误。
如何让构造函数检查参数类型是否正确,如果不正确,请再次声明 object1。 -
你不应该这样做。 new is called
时调用构造函数,即创建对象时,如果参数不匹配,则不会调用构造函数本身。为此(如果需要)使用静态辅助方法。
在构造函数中编写 while 循环是否可以接受? (使用instanceof检查只要类型不对要求重新输入)
构造函数中不应包含任何业务逻辑。就这样。 instanceof
检查 可能 可以接受,具体取决于上下文(具体情况)
我是不是完全想多了,有一种更简单的方法可以做到这一点 - 是的。不要使用 无效的 参数调用构造函数。不要在其中放入 业务 逻辑。验证逻辑是可以接受的。
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
检查,但是参数有不同的类型,有没有办法 return 声明参数的类型?
或者我是不是想多了,还有更简单的方法吗?
你不需要,因为 Java 编译器会在编译时给你一个错误。它是强类型的,这意味着一个变量只有一种类型并且只有一种类型。
您提供的代码无法编译
首先,如果你给构造函数提供了错误的参数,java编译器会return出错。回答你的第二个问题,在构造函数中使用 while 循环是可以接受的。
Target object1 = new Target("Apple", 4.32, "who knows?")
会给你一个 编译时间 错误。方法调用在编译时 resolved 但实际调用是在运行时完成的。
因此,一旦遇到上述语句,编译器会检查是否存在能够接受这些参数的构造函数,如果没有,然后你得到一个错误。
如何让构造函数检查参数类型是否正确,如果不正确,请再次声明 object1。 -
你不应该这样做。 new is called
时调用构造函数,即创建对象时,如果参数不匹配,则不会调用构造函数本身。为此(如果需要)使用静态辅助方法。
在构造函数中编写 while 循环是否可以接受? (使用instanceof检查只要类型不对要求重新输入)
构造函数中不应包含任何业务逻辑。就这样。 instanceof
检查 可能 可以接受,具体取决于上下文(具体情况)
我是不是完全想多了,有一种更简单的方法可以做到这一点 - 是的。不要使用 无效的 参数调用构造函数。不要在其中放入 业务 逻辑。验证逻辑是可以接受的。