回答
在Java-8之前,關於「包含在Java類中」的所有方法的陳述完全是真的。但是,隨着Java-8中lambda的引入,還有一個代碼可能會出現的地方 - lambda函數。與仍然是類的匿名類不同,lambda是一種不同類型的代碼託管實體。
Java-8增加了另一個可以出現方法的地方 - 一個接口。新的語言添加使您可以指定界面中方法的默認實現。這並不意味着你可以調用它,但你當然可以在Java-8接口中託管一些可執行代碼。就「獨立式」方法而言,沒有任何語言加法允許它們使用:所有可執行邏輯必須在之外的某個容器內,但不一定是一個類。
你的意思是Java 8,不是嗎? ;-) – QueryLars
如果我沒有弄錯,lamda函數在類中。接口是類。無論如何,接口總是可以有方法 - 只是在8之前,所有的接口方法都是公開的和抽象的。 – emory
@emory接口絕對不是類(反正在外面反射)。就lambda表達式而言,它實際上非常棘手:編譯器很聰明,避免在lambdas不捕獲時創建幕後類。 – dasblinkenlight
不,方法是類的函數,必須在類中創建。
在課外,他們是非法的。
但是,我很好奇這個聲明有多明確。
這是非常確定的。
不,這是不可能的。方法應該在課堂上。
如果你認爲邏輯上也可以發現自己在課堂以外沒有任何東西。所以你從哪裏調用你的方法。
呃...不完全。你不能在編譯時做,但你可以在飛行中做到這一點。您可以即時將字節添加到類中。如果你知道Java虛擬機規範,就可以做到這一點,但我想你也許還可以與Apache的BCEL做到這一點:
http://jakarta.apache.org/bcel/index.html
也還有其他的選擇。讓你的課程抽象化,而不要實現該方法。做一個界面。但是,是的,您可以爲方法創建字節碼,並在運行時將其綁定到類。
不,這是不可能的。因爲Java一直是面向對象的,所以無論程序何時運行,都會在類的內部運行,以便更容易地創建和集成對象。然而,有一些面向對象的語言,您可以在類之外創建方法,例如PHP。對於PHP來說,這是因爲它從來不是以對象爲導向的,而是被改變爲以對象的方式運行。
- 1. 是否可以在Delphi中創建一個類型方法?
- 2. 是否可以創建一個可用於創建任何類的「新」實例的泛型方法或類?
- 3. 是否可以創建一個未定義類型的方法?
- 4. 是否可以編寫一個創建方法的方法?
- 5. ColdFusion:創建一個不包含任何複雜類型的wsdl
- 6. 是否可以在rails包上創建自包含的ruby?
- 7. 是否可以在一個類中創建子類?
- 8. 是否有可能創建一個包含單個jar的ClassLoader?
- 9. wxPython:wx.PyControl是否可以包含一個wx.Sizer?
- 10. 是否可以訪問在方法內創建的類?
- 11. 如何創建一個可以在python中創建類變量的方法?
- 12. 是否有一個EventHandler可以檢查ListBox是否包含任何項目?
- 13. 是否可以在NetLogo中創建類?
- 14. 如何創建一個包含幾個可以相互通信的類的類?
- 15. 是否可以在同一個類中創建一個類的實例?
- 16. 是否可以爲同一個類創建不同的mouseClicked()?
- 17. 我可以用`__exit__`方法創建一個類而不是`__enter__`方法嗎?
- 18. 是否可以在C#中創建一個新類型?
- 19. 是否可以創建一個通用約束方法?
- 20. 如何創建一個可以在C#中執行任何異常的方法?
- 21. 是否可以使用方法創建一個空的Java枚舉類型?
- 22. 是否可以創建一個向量圖,其中向量可以是任何類型的?
- 23. 是否有可能創建一個可以在bugzilla中編輯組件但不包含產品的用戶
- 24. 是否可以創建強制JSP(包含在內)?
- 25. 如何創建可以包含在任何位置的語法規則?
- 26. 是否可以創建一個包含普通列和超級列的列族?
- 27. 是否可以包含一個。 (句點)在一個ActionName?
- 28. 在步驟定義類中包含非步驟方法是否可以接受?
- 29. 在另一個類的方法中包含一個類
- 30. 無法爲任何類中不包含main方法的webdriver + TestNg項目創建可執行jar
你會怎麼稱呼它?每個方法都需要在一個類中定義,因爲在類之外沒有別的東西。 –
你爲什麼懷疑? –
@Dadou因爲在C#中,'struct'可以用來代替'class'。我認爲Java中沒有'struct',但爲了安全起見,我想在這裏與所有的專家覈對一下它是否確定。 – user3437460