变量如何打开equals语句以接受Java中的多个参数?
我有一个梦想
在这个梦中,我可以替换这样的结构:
if(aLongVariableName.equals(classInstance.aPropertyOfThatInstance) ||
aLongVariableName.equals(classInstance.aDifferentProperty)){
...
}
与
if(aLongVariableName.equals(classInstance.aDifferentProperty || aPropertyOfThatInstance)){
...
}
我认为后者更简洁,更容易阅读。我确信有些事情应该是可能的,因为方法可以用这种签名public void readUnlimitedVariables(Variable ... vars)
声明,它使用逗号分隔变量(与||
甚至&&
相反)
这可以打开任何返回布尔值的对象,例如:
if(myLovelyInstance instanceof AwesomeClass && EpicClass){
...
}
其中myLovelyInstance
实现AwesomeClass && EpicClass
这在Java中可能吗?到目前为止,我还没有通过谷歌搜索或其他方式找到任何相关信息。如果不是在vanilla Java中,是否有任何第三方软件包(如Lombok或lambdaJ)允许这样做?如果不是,这是否是任何语言的特征?这对我来说似乎很直观,但我在任何地方都没见过
# 1 楼答案
如果答案是否定的,也许OP会发现这很有用
# 2 楼答案
您可以使用varargs和Lombok的扩展方法获得非常类似的结果:
在实用程序类中定义以下静态方法:
使用Lombok使
eqAnd
和eqOr
成为扩展方法:显然,如果你不喜欢lombok,你可以像使用常规静态方法一样使用它们