Java 使用三元相似方法调用方法
正如我们现在所说,可以使用如下三元运算符:Java 使用三元相似方法调用方法,java,android,methods,operators,ternary-operator,Java,Android,Methods,Operators,Ternary Operator,正如我们现在所说,可以使用如下三元运算符: String testString = "test"; int myInt = testString.equals("test") ? 1 : 2; 但是,我如何才能用方法做到这一点? 假设我有以下几点: String testString = "test"; if (testString.equals("test") { doSomething(); } else { doSomethingElse(); } 是否可以通过以下方式
String testString = "test";
int myInt = testString.equals("test") ? 1 : 2;
但是,我如何才能用方法做到这一点?
假设我有以下几点:
String testString = "test";
if (testString.equals("test") {
doSomething();
} else {
doSomethingElse();
}
是否可以通过以下方式将其组合起来:
testString.equals("test") ? doSomething() : doSomethingElse();
在Android studio中使用它时,会导致说“不是一个声明”
编辑
可以通过初始化局部变量来完成,但这有点不寻常
public void test() {
String testString = "test";
boolean test = testString.equals("test") ? doSomething() : doSomethingElse();
}
public boolean doSomething() {
return true;
}
public boolean doSomethingElse() {
return false;
}
你只能写
testString.equals(“测试”)?doSomething():doSomethingElse()代码>
如果doSomething()
和doSomethingElse()
都返回某物,并且这些某物要么具有完全相同的类型,要么是协变类型。将这两个函数设置为返回布尔值就足够了
这是因为整个东西都是一个表达式,表达式既有值也有定义良好的类型
如果不想对返回值执行任何操作,请使用If
语句。可以。而且你有很好的语法。不,你不能!它将其称为“非语句”,使用if
语句。这已经是你想要的了。三元运算符不是任何if
语句的替代品。顺便说一句:这样做的好OO方法是:ThisOrThat whoCares=myFactory.getDoerFor(“test”);whoCares.doIt()
。尽可能地隐藏if,然后使用同一接口的不同实现转向OO/多态性。我能想到的唯一可能解决这一问题的方法是让这两个方法都返回布尔值,并将其初始化为变量。示例:boolean test=testString.equals(“test”)?doSomething():doSomethingElse()代码>其中public boolean doSomething(){return true;}
和public boolean doSomethingElse(){return false;}