![](/img/trans.png)
[英]How to call a non-static method from a non-static class using method reference in Java 8?
[英]Call static method inside body of its class using method reference
我最近開始閱讀有關Java Swing和lambda表達式的信息。 我讀到您應該始終通過使用java.awt.EventQueue.invokeLater()
調用方法來構造框架,如下所示:
public class SwingTests
{
private static void createGUI()
{
//creates frame, packs etc.
}
public static void main(String[] args)
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
createGUI();
}
}); //haven't really figured out formatting for this yet
}
}
然后我的IDE建議使用lambda表達式代替匿名類,因此我切換到
java.awt.EventQueue.invokeLater(() -> createGUI());
但是在閱讀時,我還發現了方法引用,並想使用它們。 但是,用() -> createGUI()
this::createGUI
() -> createGUI()
替換() -> createGUI()
會產生編譯器錯誤,因為“無法從靜態上下文引用此非靜態變量”。 我發現SwingTests::createGUI
可以工作,但是在名稱上以自己的名稱引用類似乎很奇怪。 有更好的方法嗎?
顯然,這是正確的方法,任何本可以允許的快捷方式都會對編譯器造成歧義。 另請參閱Holger的鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.