作者Killercat (殺人貓™)
看板java
標題Re: [問題] 將 static method 當做函數的參數傳入?
時間Tue Aug 20 13:32:32 2013
※ 引述《Neisseria (Neisseria)》之銘言:
: 程式碼易讀版 http://pastebin.com/PsyzqbBQ
: 程式碼是 quick sort 的練習,參考網路上的略為修改
: 要問的問題是 我寫了一個函數來做為 Comparator 如下
: public static<T extends Comparable<? super T>>
: int ascending(T t1, T t2) {
: return t1.compareTo(t2);
: }
: 我想要將 Comparator 傳入 quick sort 的函式
: quickSort(list, 0, list.size() - 1, QuickSortTest::ascending)
: 其中 QuickSortTest 是主要的 public class
: 不過無法編譯成功,錯誤在 QuickSortTest::ascending
: 似乎無法將 static method 直接當參數傳入
: Java 也不支援 QuickSortTest::ascending 這類的語法
: 請各位先進不吝給個方向
quickSort(list, 0, list.size() - 1, new Comperator<T>() {
int ascending(T t1, T t2) {
return QuickSortTest<T>.ascending(t1, t2);
}
});
java沒辦法傳一個method(也不能說沒辦法 不過要用reflect把它invoke)
基本上只能傳object,所以用一個匿名的class把它包起來就好了.
另外.... "::"? 你C++寫太多了(敲頭)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.124.251.135
推 PsMonkey:攻擊行為是禁止的 [毆] [喂喂] 08/20 13:33
→ swpoker:等下!敲頭函式明明就是private!你怎麼可以用阿!!! 08/20 13:42
→ Killercat:我用Method硬用name抓出來invoke的(被打) 08/20 14:37
→ PsMonkey:你不考慮直接洗腦嗎? [逃] 08/20 14:47
推 superlubu:我之前也是用 reflection ... 08/20 15:35
→ Killercat:對我這個C++出身的來說 reflect真的是邪道啊 =_=+ 08/20 16:00
→ ssc24:老師說:寫JAVA最好忘記C or C++,免得會有刻板印象,走火入魔 08/20 18:47
→ qrtt1:二邊都弄清楚就不會走火入魔了 08/20 19:26
推 PsMonkey:兩邊都弄清楚的過程當中會先走火入魔 Orz 08/20 19:27
→ Killercat:對於一個工作要用五種語言的人來說 歡喜做甘願受阿(淚 08/20 19:59
→ realmeat:走火入魔???可能我先玩爛一邊再走另一邊,完全沒感覺 08/20 21:48