回答
我能想到的唯一冲突是
int sameName = 5;
public int sameName() {
//method body
return 100;
}
如果你写“this.sameName”时,你应该写“this.sameName()”和反之亦然在程序的某个地方然后代码的湮没才刚刚开始。
但这只是一个错误。这仍然是合法的。 :D – zEro 2013-07-08 13:50:55
@vikingsteve:P – 2013-07-09 07:03:08
对于较粗体的+1:O – vikingsteve 2013-07-09 07:04:36
这完全没问题,因为方法和变量的调用方式不同。
代码:
String name = "myVariable";
public String name() {
return "myMethod";
}
System.out.println(name()); // Brackets for method call
System.out.println(name); // No brackets for variable call
输出:
的MyMethod
MYVARIABLE
你可以,但它是一种抗PA ttern,应尽量避免,并且可以通过分析,像这样被抓:
其实,我遇到了一个问题,这是非常具体的。它只是表现在Java 8(使用Nashorn),而不是Java 6(使用Rhino)。如果它试图通过Javascript访问一个Java对象的实例变量,那么[]
运算符会改为返回方法实例。
让我们假设我运行下面的Java声明:
class MyClass {
private boolean isSet=false;
public boolean isSet() { return isSet; }
}
如果我在处理JavaScript等类的一个对象,然后尝试用[]
操作符来访问它,我得到的方法参考。
var obj = new MyClass();
var myfields = (myclass.getClass()).getDeclaredFields();
var myfieldname = myfields[0].name;
// The following prints the method declaration, not the boolean value:
// [jdk.internal.dynalink.beans.SimpleDynamicMethod boolean MyClass.isSet()]
println(obj[myfieldname]);
更新:显然,Nashorn's method overloading resolution mechanism(“含蓄”或非有意的)提供更高的优先级的方法,而不在具有相同名称的实例字段变量。
- 1. 方法参数和实例变量名称相同的混淆
- 2. 具有相同的实例名称
- 3. 方法和变量名称相同
- 4. 在Objective-C中具有相同名称的类方法和实例方法
- 5. 具有相同名称的PHP变量
- 6. 一个方法中具有相同名称的多个变量
- 7. 全球和$ _SESSION具有相同名称的变量都相同
- 8. 派生类中的实例变量与超类的私有实例变量具有相同的名称?
- 9. Ruby实例方法&带有相同名称的条件局部变量赋值
- 10. 具有相同名称的方法
- 11. Javascript私有变量和参数具有相同的名称
- 12. 提供相同名称的类和实例方法的Ruby类
- 13. 具有相同变量名称的变量作用域?
- 14. 匹配2具有相同实例名称的不同对象
- 15. 具有相同名称的C++常量和可变函数
- 16. 函数和变量具有相同的名称
- 17. C++变量具有相同的名称,上下文:global和private,
- 18. 具有相同名称的Visual Basic句柄和多个变量
- 19. 相同的类和实例名称
- 20. Java:如何从不同类实例化的不同对象中调用具有相同名称的方法?
- 21. 的Java:调用具有名称的方法保存在变量
- 22. 访问的封闭变量时,该方法具有使用相同的名称
- 23. 相同的变量名称和方法TypeScript
- 24. 具有相同名称的SQL Server的两个实例?
- 25. 如何调用和测试具有相同名称的方法?
- 26. 具有相同名称的Php类和特征方法
- 27. 具有相同名称的全局变量和局部变量使用Javascript
- 28. 具有相同名称的全局变量和局部变量,意外值
- 29. 2具有相同实例名称的动画片段
- 30. 使IDE处理具有相同名称的所有变量
你为什么不直接尝试一下呢? :) – 2012-03-31 23:27:20
这是不允许在C#中。 – 2015-05-01 12:15:44