bridge method :
這個方法存在的意義?或者這個方法用來解決什麼問題呢?
解決泛型遇到多型,jvm使用橋方法解決。
舉例,泛型遇到多型。
如下面的兩段**:
public
class
pair
public
pair(t first, t second)
public
t getfirst()
public
t getsecond()
public
void
setfirst(t newvalue)
public
void
setsecond(t newvalue)
}
class
dateinterval
extends
pair
}
由於型別擦除的原因,dateinterval存在兩個setsecond方法,分別為:
public void setsecond(date second) //自身建立
public void setsecond(object second) //繼承自pair
考慮以下呼叫:
dateinterval interval = new dateinterval(...);
pairpair = interval;
pair.setsecond(adate);
出現問題:由於多型性,pair理論上應該呼叫dateinterval.setsecond方法。但是根據上面的分析,dateinterval類存在兩個setsecond方法,到底該如何呼叫呢?
jvm遇到 :
dateinterval interval = new dateinterval(...);
pair
pair = interval;
1. 正常思維是jvm最終呼叫 setsecond(date) 這個方法,也就是 dateinterval 的方法。
2 實際上,jvm 會用 pair 引用的物件去呼叫這個setsecond(object)方法。那 dateinterval 的方法呢?
3. jvm通過 pair 的方法再間接呼叫 dateinterval 的方法(這就是jvm對泛型遇到多型的核心處理方式)
4. pair的方法相當於 「橋梁的作用 」,它的內容就是呼叫 dateinterval 的方法
public void setsecond(object second)
這個方法叫做 橋方法。
另外呢,jvm可以通過返回型別 來區分多型方法。
泛型中的橋接方法
宣告乙個抽象類 public abstract t selectbyprimarykey t t 再宣告其子類 override public user selectbyprimarykey user user 單純獲取子類中宣告的方法,會發現子類竟然有兩個方法 system.out.println...
Java中的泛型方法
泛型類,是在例項化類的時候指明泛型的具體型別 泛型方法,是在呼叫方法的時候指明泛型的具體型別 定義泛型方法語法格式如下 呼叫泛型方法語法格式如下 說明一下,定義泛型方法時,必須在返回值前邊加乙個,來宣告這是乙個泛型方法,持有乙個泛型t,然後才可以用泛型t作為方法的返回值。class的作用就是指明泛型...
JAVA 泛型類和泛型方法(靜態方法泛型)
泛型類定義的泛型,在整個類中有效。如果被方法是用,那麼 泛型類的物件明確要操作的具體型別後,所有要操作的型別就已經固定了。為了讓不同的方法可以操作不同型別,而且型別還不確定。那麼 可以將泛型定義在方法上。泛型類class demo public void print t t class generi...