作者zanyking (遙遠的旅人)
看板java
標題Re: [問題] class變數存取問題
時間Wed Mar 15 23:18:31 2006
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: 請注意一下,Comparator 沒有要 "給誰用"
: 他只是提供一個方便抽換的方法
: TreeSet 也好,Arrays.sort 也好
: 不提供 Comparator 可不可以? 當然可以...
: 運作起來依然正常...
: 只要裡頭的物件都有 implement Comparable 就好
: 沒有也沒關係,大不了丟出 ClassCastException
: (就算你給他 Comparator,一樣還是可能出現 ClassCastException 阿)
我說一下我的幹過的事情好了。
Comparator可以做出怎樣的好事來呢?
...簡單的虛擬碼:
int compare(Object o1, Object o2)
{
class1 = o1.getClass();
class2 = o2.getClass();
//Reflection operation...
int o1MethodWeight = this.matchMethodsWeight(class1,"set*:string,int");
int o2MethodWeight = this.matchMethodsWeight(class2,"set*:string,int");
if(o1MethodWeight>o2MethodWeight)reutrn 1;
if(o1MethodWeight==o2MethodWeight)reutrn 0;
if(o1MethodWeight<o2MethodWeight)reutrn -1;
}
所以,我是需要自己實做一個container並且對內部的DynamicProxyObject
作Pooling,同時我需要一個物件資源耗費可能性的指標,以方便排序後其
他部分有比較好的輪詢策略。
但問題來了,我不想作一堆的helper Object去持有ProxyObject,然後在內
部計算這樣很浪費資源。同時我也希望put進去的Proxy可以快樂的自己對號
入座。
可是,Dynamic Proxy Object是byteCode程式碼產生器產生出來Load到
ClassLoader裡頭的,它implement的interface是Deployment Discripter定
義的,我只能執行期去偵測它,而不能預先知道。
於是我想出這種辦法,這個方法是假設:
擁有符合給定pattern方法越多的,資源耗費越大。
PS:上面的例子是方便說明,實際傳入的pattern是個其他物件。
: 這句話又是什麼意思 T__T
: : 沒實做不知道 XD
: [舉手] 不同型之間為什麼要讓他們比較? ==.==
: 如果你要討論可不可行... 那... 一定可行的
: 你的 toString() 硬幹法就是經典
: 問題是... 為什麼要這麼作? T___T
這世上需要幹蠢事的人很多...
我算是一個。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.85.116.116
1F:推 PsMonkey:這篇 m 了也不知道該往哪裡丟 .... XD 03/16 00:29