[英]Null is casted in decompiled java class file
我反編譯了一個java .class文件並看到了這行代碼
new ResponseModel("Reset Complete", false, (LinkedHashMap)null)
該行對應於
new ResponseModel("Reset Complete", false, null);
為什么輸入null參數? 它只是我的反編譯器暗示參數類型?
想象你已經重載了一個方法:
public class Foo {
public void something (String s) { ... }
public void something (List l) { ... }
}
現在使用null
參數調用something
是不明確的 。 要將調用綁定到任一方法,您需要轉換null值 ,為其指定一個類型:
new Foo().something((String)null);
new Foo().something((List)null);
由於此類在運行時可能與編譯時不同 (在編譯時,方法可能不會重載,但在運行時該類是一個具有重載方法的較新版本),編譯器在字節碼中使其顯式化以防止后來模棱兩可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.