gpt4 book ai didi

java - 为什么可以在类型参数上调用静态方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:40 26 4
gpt4 key购买 nike

我昨天了解到可以在类型参数上调用静态方法。例如:

public static <T extends Arrays> void main(String[] args) {
T.sort(args);
}

允许这样做有什么充分的理由吗?它可能以某种方式帮助从非通用代码过渡到通用代码吗?

最佳答案

我不认为这是明确允许的事情,而只是它不是被禁止的。

JLS 8.4.4 Generic Methods没有指定任何不允许使用的类型变量。

JLS 8.1.2 Generic Classes and Type Parameters列出 T 不能使用的地方:

It is a compile-time error to refer to a type parameter of a generic class C in any of the following:

  • the declaration of a static member of C (§8.3.1.1, §8.4.3.2, §8.5.1).
  • the declaration of a static member of any type declaration nested within C.
  • a static initializer of C (§8.7), or
  • a static initializer of any class declaration nested within C.

基本上,除非另有说明,否则在任何允许类型的地方都允许使用类型变量,并且他们没有列出static 方法调用。

故意还是疏忽?谁知道,但可能是故意的。既然允许在实例变量上调用静态方法,为什么也不允许这样做。仅仅因为它是允许的,并不意味着您应该永远这样做。

作为JLS 4.4 Type Variables说它(强调我的):

A type variable is an unqualified identifier used as a type in class, interface, method, and constructor bodies.

关于java - 为什么可以在类型参数上调用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109460/

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