在java中,如果对象和类名相同,如何静态调用方法

在java中,如果对象和类名相同,如何静态调用方法,java,Java,如何调用对象名与类名相同的任何类的静态方法?实例名不要以大写字母开头 你应该写: class SomeClass { static public void someStaticMethod(){}; } SomeClass SomeClass=new SomeClass(); SomeClass.someStaticMethod(); 或者更好: SomeClass someClass=new SomeClass(); 如果你遵循这些非常常见的规则,你就不会有这个问题。 (我正试着

如何调用对象名与类名相同的任何类的静态方法?

实例名不要以大写字母开头

你应该写:

class SomeClass
{
    static public void someStaticMethod(){};
}

SomeClass SomeClass=new SomeClass();
SomeClass.someStaticMethod();
或者更好:

SomeClass someClass=new SomeClass();
如果你遵循这些非常常见的规则,你就不会有这个问题。
(我正试着猜这个'-1'从哪里来!!!)

实例名称不要以大写字母开头

你应该写:

class SomeClass
{
    static public void someStaticMethod(){};
}

SomeClass SomeClass=new SomeClass();
SomeClass.someStaticMethod();
或者更好:

SomeClass someClass=new SomeClass();
如果你遵循这些非常常见的规则,你就不会有这个问题。
(我试图猜测这个'-1'来自哪里!!!)

变量名不应该大写,因此您应该:

SomeClass someObject=new SomeClass();
对于静态的和:

SomeClass.someStaticMethod();

对于非静态版本。

变量名称不应大写,因此您有:

SomeClass someObject=new SomeClass();
对于静态的和:

SomeClass.someStaticMethod();

对于非静态版本。

您不必做任何事情-它将按原样工作(尽管使用这种令人困惑的代码没有什么意义)

中指定了如何处理不明确的名称。特别是:

如果含糊名称是由单个标识符组成的简单名称:

  • 如果标识符出现在具有该名称的局部变量声明(§14.4)或参数声明(§8.4.1、§8.8.1、§14.20)或字段声明(§8.3)的范围(§6.3)内,则模糊名称将重新分类为ExpressionName
  • [……]
  • 否则,如果在包含标识符的编译单元(§7.3)中通过单一类型导入声明(§7.5.1),或通过类型按需导入声明(§7.5.2),或通过单一静态导入声明(§7.5.3),或通过静态按需导入声明(§7.5.4)声明该名称的类型,然后,模糊名称被重新分类为类型名

因此,在您的情况下,
SomeClass
将是您在上面一行声明的变量,它比类型具有优先级。

您不必做任何事情,它将按原样工作(尽管使用这样一个混乱的代码没有什么意义)

中指定了如何处理不明确的名称。特别是:

如果含糊名称是由单个标识符组成的简单名称:

  • 如果标识符出现在具有该名称的局部变量声明(§14.4)或参数声明(§8.4.1、§8.8.1、§14.20)或字段声明(§8.3)的范围(§6.3)内,则模糊名称将重新分类为ExpressionName
  • [……]
  • 否则,如果在包含标识符的编译单元(§7.3)中通过单一类型导入声明(§7.5.1),或通过类型按需导入声明(§7.5.2),或通过单一静态导入声明(§7.5.3),或通过静态按需导入声明(§7.5.4)声明该名称的类型,然后,模糊名称被重新分类为类型名

因此,在您的情况下,
SomeClass
将是您在上面一行声明的变量,它比类型具有优先级。

这甚至可以通过编译吗?为什么要将
类名
对象名
放在第一位?将包名放在类的前面。i、 e
com.mypackage.SomeClass.someStaticMethod()另外:对象名称应解释此对象存在的原因。如果它只是一个随机的
someClass
,那么它无论如何都不应该存在。它是某物的“目标”、“源头”还是“蛙鸣者”?在我看来,变量名等于类名(即使大小写不同)是一种轻微的代码味道。@Isaac是的,这就是我好奇的原因。这甚至可以通过编译吗?为什么要将
类名
对象名
放在第一位?将包名放在类的前面。i、 e
com.mypackage.SomeClass.someStaticMethod()另外:对象名称应解释此对象存在的原因。如果它只是一个随机的
someClass
,那么它无论如何都不应该存在。它是某物的“目标”、“源头”还是“蛙鸣者”?在我看来,变量名等于类名(即使它们的大小写不同)是一种轻微的代码味道。@Isaac是的,这让我很好奇是的,我知道。但我很好奇是否还有其他方法,因为声明类和对象相同不会显示任何编译错误。您应该自己尝试并告诉我们答案。然而,只有保持这种非常糟糕的编码习惯,这才有可能。。。(刚才-1消失了;)没关系)是的,我知道。但我很好奇是否还有其他方法,因为声明类和对象相同不会显示任何编译错误。您应该自己尝试并告诉我们答案。然而,只有保持这种非常糟糕的编码习惯,这才有可能。。。(刚才-1消失了;)没关系)