回答
我能想到的唯一衝突是
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