gpt4 book ai didi

java - 在 Java 中如何打开我的 equals 语句来接受多个参数?

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:00 25 4
gpt4 key购买 nike

我有一个梦想....

在这个梦中我可以替换这样的结构:

if(aLongVariableName.equals(classInstance.aPropertyOfThatInstance) ||  
aLongVariableName.equals(classInstance.aDifferentProperty)){
...
}

if(aLongVariableName.equals(classInstance.aDifferentProperty || aPropertyOfThatInstance)){ 
...
}

我认为后者更简洁,也更容易阅读。我确信有些事情应该是可能的,因为可以用这种签名 public void readUnlimitedVariables(Variable ... vars) 声明方法,它采用 逗号 分隔的变量(相反到 || 甚至 &&)。

这可以对任何返回 boolean 值的东西开放,例如:

if(myLovelyInstance instanceof AwesomeClass && EpicClass){
...
}

其中 myLovelyInstance 实现了 AwesomeClass && EpicClass

这在 Java 中可行吗?到目前为止,我还没有通过谷歌搜索或 SO 找到任何关于此的内容。如果它不是普通的 Java,是否有像 Lombok 或 lambdaJ 这样的第三方包允许这样做?如果不是那样,这是否是任何语言的特征?这对我来说似乎非常直观,但我在任何地方都没有看到。

最佳答案

Is this possible in Java?

没有。

|| 运算符采用两个 boolean 操作数。没有办法改变这一点。 Java 不允许您重载运算符,或以其他方式“扩展语言语法”。

最接近的方法是像这样为 equals 定义一个重载:

public boolean equals(Object ... others) {
for (Object other: others) {
if (this.equals(other)) {
return true;
}
}
return false;
}

并像这样使用它:

if (aLongVariableName.equals(classInstance.aDifferentProperty,
classInstance.anotherProperty)) {
...
}

... 这根本不是很接近。 (这也是一个非常糟糕的主意,IMO)

事实上,我想不出有任何语言支持与您所提议的语法类似的语法。令我印象深刻的是,这有太多的歧义可能无法成为一个合理的结构。

关于java - 在 Java 中如何打开我的 equals 语句来接受多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17378673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com