java - 更顺畅地检查多个状态的属性

标签 java if-statement

我最近偶然发现了一些事情,我认为应该有一种更顺利的方法,但我找不到。

在我的方法之一中,我必须检查 ActionEvent e 的确切来源。由于我有多个按钮,单击时应该调用相同的方法,因此我像这样检查它们:

if (e.getSource() == btn1 || e.getSource() == btn2 || e.getSource() == btn3)

对我来说这看起来不太好,因为我必须为每个按钮调用e.getSource()。我认为应该是这样的:

if(e.getSource() == btn1 || btn2 || btn3)

我知道这行不通,但我希望你能明白我想要实现的目标。如果是重复的,很抱歉,但我找不到它。如果根本不可能,那么我就不得不忍受它。

最佳答案

您可以将冗长的代码隐藏在带有变量参数的函数中。

public boolean checkSource( Object source, Object... buttons){
   for( Object btn: buttons)
       if( source == btn )
           return true;
}

然后你必须列出按钮:

checkSource( e.getSource(), btn1, btn2, btn3, ... );

或者,使用 lambdaPredicate 接口(interface):

Predicate<Object> p1 = ( btn  -> btn == e.getSource() );
...
if( p1.test( btn1 ) || p1.test( btn2 ) || p1.test( btn3 ) || ...)

关于java - 更顺畅地检查多个状态的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281070/

相关文章:

java - Apache HttpComponents : org. apache.http.client.ClientProtocolException

java - 查找字符串中有多少个元音

C++ if 命令读取 true 尽管 false

swift - 值为 Int 但 case 可以包含数组的 Switch 语句

java - 将项目导入 Netbeans

java - 在 Spring 中创建实体实例,无需任何 Spring 交互

java - 使用 Apache CXF 的 JAX-RS 文件上传

java - 两个看似相等的字符串并不相等

c - 是否可以将计时器值存储到变量中?

xml - XSL 使用 <xsl :if> and sorting 测试空字符串