Sadece bu "hata" ile karşılaştı, ama bu amaçlanıyorsa emin değilim: Kodu: İlk örnekte someMethod
yılındaNeden invokeLater ana iş parçacığında yürütülür?
public static Object someMethod(){
assert SwingUtilities.isEventDispatchThread();
return new Object();
}
public static void main(String[] args){
SwingUtilities.invokeLater(() -> someMethod().toString());//First Example
SwingUtilities.invokeLater(someMethod()::toString);//Second Example
}
salıncak Konu üzerinde yürütülmektedir, ancak ikinci örnekte o değil, benim düşünceme göre olmalı.
Bu bir hata mıdır, yoksa bu amaçlanmış mı? "Tamam, Salıncak, ben invokeLater
sizi istediğini someMethod().toString()
olduğunu":
Yöntem başvurusu, uygun bir nesne veya sınıf için ilk bağımsız değişken olarak gereksinim duyuyor gibi görünüyor, onu elde etmenin bir yolu değil, bu nedenle işlem, onaylama işlemini bozan ana iş parçacığında çağrılır. İddia edilmeden, metot, '() -> methodResult.toString()' eşdeğeri olan 'methodResult :: toString' oluşturmak için kullanılır. – Pshemo
Hata nerede? İkinci çağrıda, 'someMethod()' 'ana 'gövdede (böylece,' ana 'iplikte) değerlendirilir ve daha sonra, ortaya çıkan nesnenin' toString' yöntemine bir başvuru 'invokeLater'a geçirilir. '. – RealSkeptic
Ayrıca bkz. [System.out :: println' için eşdeğer lambda ifadesi nedir?] (Https://stackoverflow.com/a/28025717/2711488)… – Holger