相关疑难解决方法(0)

在Java中选择哪个重载为空?

如果我用Java写这行:

JOptionPane.showInputDialog(null, "Write something");
Run Code Online (Sandbox Code Playgroud)

将调用哪种方法?

  • showInputDialog(Component parent, Object message)
  • showInputDialog(Object message, Object initialSelectionValue)

我可以测试一下.但在其他类似的情况下,我想知道会发生什么.

java parameters methods invocation

52
推荐指数
3
解决办法
8270
查看次数

多态和方法重载

我有一个快速而直接的问题:

我有这个简单的课程:

public class A
{
    public void m(Object o)
    {
      System.out.println("m with Object called");
    }

    public void m(Number n)
    {
       System.out.println("m with Number called");
    }
    public static void main(String[] args)
    {
       A a = new A();
       // why will m(Number) be called?
       a.m(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:实际上是实际调用Number的方法.对此感到抱歉.

如果我调用am(null),则使用Number参数调用方法.

我的问题是:这是为什么?这个指定的java语言规范在哪里?

java polymorphism overloading

27
推荐指数
3
解决办法
5296
查看次数

方法重载并选择最具体的类型

示例代码是:

    public class OverloadingTest {

       public static void test(Object obj){
           System.out.println("Object called");
       }

       public static void test(String obj){
           System.out.println("String called");
       }

       public static void main(String[] args){
           test(null);
           System.out.println("10%2==0 is "+(10%2==0));
           test((10%2==0)?null:new Object());
           test((10%2==0)?null:null);
   }
Run Code Online (Sandbox Code Playgroud)

输出是:

名为
10%2 == 0的 字符串为true
称为
String的对象称为

第一次调用test(null)String参数调用方法,这是可以理解的The Java Language Specification.

1)任何人都可以解释我test()在前面的电话中调用的基础吗?

2)当我们提出时,说一个if条件:

    if(10%2==0){
        test(null);
    }
    else
    {
        test(new Object());
    }
Run Code Online (Sandbox Code Playgroud)

它总是使用String参数调用方法.

编译(10%2)时编译器会计算表达式吗?我想知道表达式是在编译时还是在运行时计算的.谢谢.

java static-methods overloading

23
推荐指数
1
解决办法
7390
查看次数