当前位置: 首页 > 面试题库 >

为什么三元运算符在Java中的方法参数中不起作用

叶文博
2023-03-14
问题内容

我在开发过程中注意到了这一点。

为什么三元运算符不能在方法参数中使用?这显然是InputStream或(其他)String

class A{

    public  static boolean opAlpha(InputStream inputStream) {

        // Do something

        return true;

    }

    public static boolean opAlpha(String arg) {

        // Do something else

        return true;
    }

    public static void main(String[] args) throws Exception {

        boolean useIsr = true;

        InputStream inputStream = null;
        String arg = null;

//      boolean isTrue = useIsr ? A.opAlpha(inputStream): A.opAlpha(arg); // This is OK.
        boolean isTrue =  A.opAlpha(useIsr ? inputStream : arg); // This is not. (Error : The method opAlpha(InputStream) in the type A is not applicable for the arguments (Object))

    }

}

问题答案:

表达式useIsr ? inputStream : arg的类型为Object,因为这是inputStreamInputStream)和argString)的常见类型。

您没有任何opAlpha接受的方法Object。因此,编译错误。



 类似资料:
  • 问题内容: 这段代码有什么问题: 问题答案: 三元运算符不能有不返回值或方法的语句。您需要具有返回值的语句。 您需要重写它。

  • 问题内容: Netbeans说我的三元运算符不是语句。怎么会? 我尝试过if / then / else对应项,并且工作正常: 问题答案: 三元运算符中的语句必须是非空的。他们需要退货。

  • 问题内容: 我正在通过Daniel liang在第9章“字符串”中的“ Java编程第9版简介”来学习Java,我遇到了这段代码: 好吧,有人可以解释一下这里发生了什么吗?如何从整数中添加子字符,其背后的含义是什么,谢谢。 问题答案: 来自文档 char数据类型是单个16位Unicode字符。 A 由其代码点值表示: 分钟(或0) 最多:(或65,535) 您可以在ASCII表上看到所有英文字母代

  • targetPixValList是一个包含Double对象的列表,它也包含列表中连续位置的相似值,当我尝试使用Code_1比较两个Double值时,cnt返回零。当我使用code_2时,cnt返回值。 列表的类型是 为什么“==”运算符不能与Double一起使用? 代码_1: Code_2:

  • 问题内容: 在Java 1.7.0_55中,如果我编写此字段声明,则会收到编译错误(“不兼容的类型”): 如果我将其改为: 它编译良好。(我在这里以syncedMap为例,但其他Collections方法,不可修改,同步等也是如此) 但是,为什么钻石操作员不能像我在这里期望的那样工作?由于Collections.synchronizedMap()声明为: 在我看来,构造函数调用的类型参数必须与字段

  • 但这并不能说服我。因为Kotlin支持,而普通if在该角色中也很好。 我认为有时比普通的,尽管我想知道为什么Kotlin不支持?