Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Groovy确保正确参数类型的最佳/推荐方法_Java_Groovy_Method Signature - Fatal编程技术网

Java Groovy确保正确参数类型的最佳/推荐方法

Java Groovy确保正确参数类型的最佳/推荐方法,java,groovy,method-signature,Java,Groovy,Method Signature,我试着用最好的方式做事情。 检查参数类型(关于性能和“Groovy方式”)的最佳方法是什么?我想到了两种实现: def部署(json){ if(!(json instanceof String)&&(json instanceof File)){ json=json.text }否则{ 抛出新的IllegalArgumentException('参数类型不匹配-\'json\'应该是字符串或文件') } //待办事项 } 或 谢谢:)检查的实例应该很好。但是我认为您的条件是错误的——您似乎想

我试着用最好的方式做事情。 检查参数类型(关于性能和“Groovy方式”)的最佳方法是什么?我想到了两种实现:

def部署(json){ if(!(json instanceof String)&&(json instanceof File)){ json=json.text }否则{ 抛出新的IllegalArgumentException('参数类型不匹配-\'json\'应该是字符串或文件') } //待办事项 } 或


谢谢:)

检查的
实例应该很好。但是我认为您的条件是错误的——您似乎想执行以下操作:

if (json instanceof File) {
    json = json.text
} else if(!(json instanceof String)) {
    throw new IllegalArgumentException('argument type mismatch – \'json\' should be String or File')
}
您还可以编写以下内容:

if (json.class in [String.class, File.class]) {

您的第二种方法看起来更简单,只有两个方法通过签名清楚地显示了意图。

您的问题中没有groovy特定的内容,更多的是关于编译/运行时失败

在第一个代码段中,
json
变量具有
Object
类型,并允许传入所有内容。如果您错误地传入
json
对象或
Map
,它将在运行时失败


在第二个代码片段中,json被限制为
File
String
。我更喜欢它。

谢谢你的回答:)我认为我的逻辑是正确的,因为我需要一个字符串,所以,如果
json
是一个,那么类型是正确的。此外,感谢[…]中的
@Matheus如果
json
String
,则该条件将导致
IllegalArgumentException
。第二个条件。如果您的方法必须采用类型,则声明该类型。如果它返回类型,则也声明该类型。我还更喜欢第二个选项–更接近Java,我更习惯于使用它。在这种情况下,我It’使用Java可能比使用Groovy更好。谢谢!
if (json.class in [String.class, File.class]) {