当前位置: 首页 > 知识库问答 >
问题:

java中的方法调用[重复]

马俊
2023-03-14

我的班级结构如下:

void add(String s){
    System.out.println("string");
}

void add(Object s){
    System.out.println("object");
}

public static void main(String[] args) {
    new MyClazz().add(null);
}

订单号:<代码>字符串

为什么不调用对象

共有1个答案

齐凯康
2023-03-14

StringObject更具体。因此,ulualadd(String s)优于ulualadd(Object s)

15.12.2. 编译时步骤2:确定方法签名

第二步在上一步中确定的类型中搜索成员方法。此步骤使用方法的名称和参数表达式来定位可访问和适用的方法,即可以对给定参数正确调用的声明。

可能有多个这样的方法,在这种情况下选择最具体的一个。最具体方法的描述符(签名加返回类型)是在运行时用于执行方法分派的描述符。

 类似资料:
  • 我有一个Foo和Bar对象的列表,以及每个相应对象的转换器。 Convert-method需要有所不同,因为Bar1与Bar2和Bar3等有很大不同,但是我想创建一个方法来处理所有可能的列表。 是否可以创建一个泛型方法,根据列表的内容调用相应的非泛型方法? 到目前为止,我已经尝试过了: 但这并不能编译,因为"无法解析方法'Converts(T, S)'" 有什么想法吗?

  • 问题内容: 对于以下代码,为什么打印A,B?我希望它能打印B,B。而且,由JVM执行的方法调用是动态还是静态评估? 问题答案: 重载由编译器 静态 确定。 重写 是在执行时完成的,但这不是这里的因素。 的静态类型为A,因此第一个方法调用解析为。

  • 问题内容: 现在在一些Java代码中我有这样的东西 我想调用每个父类,然后向上迭代,运行重写的。我通过显式调用来完成此操作,尽管我不想这样做。 我这样做的原因是必须在到达A中的构造函数之后进行后期处理。每个类中都有一个状态,可以适当地初始化它,这就是为什么我们有向上的s的原因。 因此,的构造函数实际上是 如果我做一些我想打电话的事情,然后打电话,然后打电话 无论如何,如果有更聪明的方法可以做到这一

  • 我在超类中有一个重载方法的基本继承情况。 下面的类扩展了上面的类: main方法只是创建一个对象(静态和动态类型)并调用: 最后打印出来 看了这个,我想既然对象的静态和动态类型都是,它会调用Person中的重载方法,该方法将作为参数。由于我显然错了,我打开了一个调试器,假设类中的getWorkDetail(this)行中对“this”的引用一定已经变成了它的超级类。然而,这不是我发现的。 显然,在

  • 本文向大家介绍Java调用方法,包括了Java调用方法的使用技巧和注意事项,需要的朋友参考一下 示例 使用反射,可以在运行时调用对象的方法。 该示例显示了如何调用String对象的方法。            

  • 可能重复:NULL参数的方法重载 以下代码编译并运行良好。 在此代码中,要调用的方法是接受字符串类型参数的方法 医生说。 如果多个成员方法既可访问又适用于方法调用,则需要选择一个来为运行时方法调度提供描述符。Java编程语言使用选择最具体方法的规则。 但我不明白,当代码中接受原语int参数的方法之一被修改为接受包装器类型Integer的参数时,例如, 发出编译时错误。 对temp的引用不明确,me