gpt4 book ai didi

java - Java 中的 void f(Class c) 和 void f(Class c) 有区别吗?

转载 作者:行者123 更新时间:2023-11-30 07:04:09 24 4
gpt4 key购买 nike

无法编译以下 Java 代码并出现错误:名称冲突

class Test {

public void f(Class<?> c) {
}

public void f(Class c) {
}
}

void f(Class c)之间有什么区别吗?无效 f(Class<?> c)在 Java 中?

最佳答案

在同一个类中声明,它们是覆盖等价的,会导致编译错误。

来自Java Language Specification

It is a compile-time error to declare two methods with override-equivalent signatures in a class.

在哪里

Two method signatures m1 and m2 are override-equivalent iff either m1 is a subsignature of m2 or m2 is a subsignature of m1.

The signature of a method m1 is a subsignature of the signature of a method m2 if either:

  • m2 has the same signature as m1, or
  • the signature of m1 is the same as the erasure (§4.6) of the signature of m2.

粗体是这里的问题。

删除Class<?>Class .

Is there any difference between void f(Class c) and void f(Class c) in Java?

从调用者的角度来看,不。在方法体内,是的。在第一种情况下,参数具有 raw type Class .在第二种情况下,参数具有参数化类型 Class<?> .

关于java - Java 中的 void f(Class c) 和 void f(Class<?> c) 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com