作者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
1F:推 PsMonkey:攻击行为是禁止的 [殴] [喂喂] 08/20 13:33
2F:→ swpoker:等下!敲头函式明明就是private!你怎麽可以用阿!!! 08/20 13:42
3F:→ Killercat:我用Method硬用name抓出来invoke的(被打) 08/20 14:37
4F:→ PsMonkey:你不考虑直接洗脑吗? [逃] 08/20 14:47
5F:推 superlubu:我之前也是用 reflection ... 08/20 15:35
6F:→ Killercat:对我这个C++出身的来说 reflect真的是邪道啊 =_=+ 08/20 16:00
7F:→ ssc24:老师说:写JAVA最好忘记C or C++,免得会有刻板印象,走火入魔 08/20 18:47
8F:→ qrtt1:二边都弄清楚就不会走火入魔了 08/20 19:26
9F:推 PsMonkey:两边都弄清楚的过程当中会先走火入魔 Orz 08/20 19:27
10F:→ Killercat:对於一个工作要用五种语言的人来说 欢喜做甘愿受阿(泪 08/20 19:59
11F:→ realmeat:走火入魔???可能我先玩烂一边再走另一边,完全没感觉 08/20 21:48