为什么不能有一个静态和非静态方法具有相同的签名?

延斯不寒而栗

我只是意识到以下内容无法编译:

class MyCoolClass {
    static void do(){..}
    void do(){..}
}

不允许这样做有充分的理由吗?也许它会导致我目前缺少的一些问题?

我目前看到的唯一问题是有人可能会尝试调用静态方法并实际调用非静态方法。但这听起来与相互隐藏的子类上的静态方法相当,所以我不会认为这是一个“好”的理由。

如果将对象视为在该方法的第 0 个参数上调用方法,则它甚至是该方法的非常正常的重载。

如果您想知道:我想要这个,因为它允许为new MyCoolClass().do()asMyCoolClass.do()或静态导入创建快捷方式,甚至 as do()

程序员块

这是因为 Java 编译器使用方法的名称和参数类型的有序列表来唯一标识类中的方法。static 是一个修饰符标志,不被视为唯一标识的一部分。唯一标识在运行时也很重要,因为类文件只包含标识方法所需的那些键。方法所在的类名,然后是方法名,然后是参数列表。

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.4.3.3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么静态和非静态方法不能共享相同的签名?

来自分类Dev

在flexbox中不能有一个静态高度?

来自分类Dev

Swift:为什么没有dynamicType的非静态方法不能调用静态变量和常量(静态let)?

来自分类Dev

Swift:为什么没有dynamicType的非静态方法不能调用静态变量和常量(静态let)?

来自分类Dev

同一合约中不能有两个具有相同名称的操作(“异步”和“非”)

来自分类Dev

Scala:为什么一个方法不能有多个vararg参数?

来自分类Dev

为什么我不能有两个具有相同TTL的同名记录?

来自分类Dev

我有一个非静态方法的问题

来自分类Dev

具有静态和非静态重载的类方法

来自分类Dev

System.Reflection.TargetException有什么作用:非静态方法需要一个目标。意思是?

来自分类Dev

有一个静态方法在枚举中使用非静态成员

来自分类Dev

使用ncurses时,为什么不能有一个名为“ refresh”的成员的结构?

来自分类Dev

为什么非恒定静态成员具有多个定义?

来自分类Dev

为什么Java中的本地类不能具有静态方法?

来自分类Dev

为什么我不能在另一个类中调用静态方法?

来自分类Dev

子类中的静态方法具有与超类中的签名相同的签名

来自分类Dev

可能静态和非静态变量具有相同的名称

来自分类Dev

为什么要创建一个只有1个静态函数的类?

来自分类Dev

如何静态检查可能具有或不具有相同签名的两个功能是否相同?

来自分类Dev

一个类中是否可能有多个具有相同名称但参数不同的方法?

来自分类Dev

具有一个静态卡和其他动态卡的RecyclerView

来自分类Dev

为什么在ITypeSymbol中有静态构造函数的集合而不是一个?

来自分类Dev

在静态控件中,为什么文本周围有一个紧密的矩形?

来自分类Dev

为什么在使用ng-options时一个选择中不能有多个ng-if选项

来自分类Dev

静态和非静态资源有什么区别?

来自分类Dev

静态和非静态资源有什么区别?

来自分类Dev

C#静态类-静态类不能具有非静态成员

来自分类Dev

当我根本不能将其放在头文件中时,为什么要声明一个“私有”函数为静态?

来自分类Dev

为什么不能将带有RowDetails静态资源的数据网格嵌套在另一个网格中?

Related 相关文章

  1. 1

    为什么静态和非静态方法不能共享相同的签名?

  2. 2

    在flexbox中不能有一个静态高度?

  3. 3

    Swift:为什么没有dynamicType的非静态方法不能调用静态变量和常量(静态let)?

  4. 4

    Swift:为什么没有dynamicType的非静态方法不能调用静态变量和常量(静态let)?

  5. 5

    同一合约中不能有两个具有相同名称的操作(“异步”和“非”)

  6. 6

    Scala:为什么一个方法不能有多个vararg参数?

  7. 7

    为什么我不能有两个具有相同TTL的同名记录?

  8. 8

    我有一个非静态方法的问题

  9. 9

    具有静态和非静态重载的类方法

  10. 10

    System.Reflection.TargetException有什么作用:非静态方法需要一个目标。意思是?

  11. 11

    有一个静态方法在枚举中使用非静态成员

  12. 12

    使用ncurses时,为什么不能有一个名为“ refresh”的成员的结构?

  13. 13

    为什么非恒定静态成员具有多个定义?

  14. 14

    为什么Java中的本地类不能具有静态方法?

  15. 15

    为什么我不能在另一个类中调用静态方法?

  16. 16

    子类中的静态方法具有与超类中的签名相同的签名

  17. 17

    可能静态和非静态变量具有相同的名称

  18. 18

    为什么要创建一个只有1个静态函数的类?

  19. 19

    如何静态检查可能具有或不具有相同签名的两个功能是否相同?

  20. 20

    一个类中是否可能有多个具有相同名称但参数不同的方法?

  21. 21

    具有一个静态卡和其他动态卡的RecyclerView

  22. 22

    为什么在ITypeSymbol中有静态构造函数的集合而不是一个?

  23. 23

    在静态控件中,为什么文本周围有一个紧密的矩形?

  24. 24

    为什么在使用ng-options时一个选择中不能有多个ng-if选项

  25. 25

    静态和非静态资源有什么区别?

  26. 26

    静态和非静态资源有什么区别?

  27. 27

    C#静态类-静态类不能具有非静态成员

  28. 28

    当我根本不能将其放在头文件中时,为什么要声明一个“私有”函数为静态?

  29. 29

    为什么不能将带有RowDetails静态资源的数据网格嵌套在另一个网格中?

热门标签

归档