欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java在重載中使用Object的問(wèn)題

 更新時(shí)間:2022年02月15日 10:27:44   作者:vinceLin054  
這篇文章主要介紹了Java在重載中使用Object的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在重載中使用Object

JAVA中調(diào)用重載方法都是先匹配同類型參數(shù)的方法,如沒(méi)有才會(huì)向上轉(zhuǎn)型去匹配參數(shù)。

例:

public void remove(int i) {
?? ?...
}
public void remove(Object object) {
?? ?...
}
?? ?int i = 0;
?? ?Integer it = 0;
?? ?remove(i); //調(diào)用了 remove(int i) 方法
?? ?remove(it); //調(diào)用了 remove(Object object) 方法

在開(kāi)發(fā)中遇到了兩個(gè)方法

public boolean lSet(List<Object> value) {
?? ?...
}
public boolean lSet(Object) {
?? ?...
}

調(diào)用時(shí):

?? ?List<Integer> list = new ArrayList<>();
?? ?list.add(1);
?? ?list.add(2);
?? ?lSet(list); ?//調(diào)用了lSet(Object)

調(diào)用了lSet(Object) 而不是lSet(List<Object> value)

不是說(shuō)先匹配類型相同的嗎?

注意重載方法中的參數(shù)List<Object> value List指定了泛型Object,但調(diào)用時(shí)傳入的是List<Integer>此時(shí)并不算同一種類型。

解決辦法

//使用?通配符 或 直接不指定泛型
public boolean lSet(List<?> value) {
?? ?...
}

Object的使用:重載equals、hashCode及實(shí)現(xiàn)compareTo

這里主要介紹Java中使用Hashtable、Arrays.sort時(shí)候如果鍵值涉及到對(duì)象、類時(shí)候的處理辦法:

1.重載equals():java中默認(rèn)的對(duì)象的equals是當(dāng)指向同一內(nèi)存地址時(shí)才為true;如果你現(xiàn)在需要利用對(duì)象里面的值來(lái)判斷是否相等,則重載equal方法。

2.重載hashCode():只有當(dāng)類需要放在HashTable、HashMap、HashSet等等hash結(jié)構(gòu)的集合時(shí)才會(huì)重載hashCode,原因:就HashMap來(lái)說(shuō),好比HashMap就是一個(gè)大內(nèi)存塊,里面有很多小內(nèi)存塊,小內(nèi)存塊里面是一系列的對(duì)象,可以利用hashCode來(lái)查找小內(nèi)存塊hashCode%size(小內(nèi)存塊數(shù)量),所以當(dāng)equal相等時(shí),hashCode必須相等,而且如果是object對(duì)象,必須重載hashCode和equal方法。

3.實(shí)現(xiàn)接口Comparable:當(dāng)需要調(diào)用sort()之類的函數(shù)要用到對(duì)象的比較的基本操作時(shí)候,就需要對(duì)Object的compareTo(Object arg0)進(jìn)行實(shí)現(xiàn)。

4.binarySearch使用注意:由于Arrays.binarySearch(Object array[],Object key)中沒(méi)有給定查找數(shù)組的范圍,據(jù)我估計(jì)可能是0到length-1,因而數(shù)組最好是都能填滿對(duì)象,如果部分為空(數(shù)組開(kāi)的過(guò)大)則會(huì)出錯(cuò)。而且搜索前要調(diào)用sort函數(shù)排序一下。因?yàn)閿?shù)組長(zhǎng)度和對(duì)象個(gè)數(shù)相同,所以sort(Object [])也不用給定范圍而全部排序。

下面是一個(gè)簡(jiǎn)單的例子

public class TermPOS implements Comparable{
? ? public String term;
? ? public String pos;
? ? public TermPOS(String a,String b)
? ? {
? ? ? ? term = a;
? ? ? ? pos = b;
? ? }
? ? //用于調(diào)用Arrays.sort(Object[])時(shí)的自定義大小,此時(shí)類后加上implements Comparable
? ? public int compareTo(Object arg0) {
? ? ? ? // TODO 自動(dòng)生成方法存根
? ? ? ? if(this.term.compareTo(((TermPOS)arg0).term) != 0)
? ? ? ? ? ? return this.term.compareTo(((TermPOS)arg0).term);
? ? ? ? return this.pos.compareTo(((TermPOS)arg0).pos);
? ? }
? ??
? ? //當(dāng)類需要放在HashTable、HashMap、HashSet等等hash結(jié)構(gòu)的集合時(shí)才會(huì)重載hashCode
? ? public int hashCode()
? ? {
? ? ? ? return term.hashCode()*pos.hashCode();
? ? }
? ? //如果你現(xiàn)在需要利用對(duì)象里面的值來(lái)判斷是否相等,則重載equal方法
? ? public boolean equals(Object obj)
? ? {
? ? ? ? if(term.compareTo(((TermPOS)obj).term) != 0)return false;
? ? ? ? if(pos.compareTo(((TermPOS)obj).pos) != 0)return false;
? ? ? ? return true;
? ? }
? ? public static void testHashtable()
? ? {
? ? ? ? Hashtable<TermPOS,Integer> t = new Hashtable<TermPOS,Integer>();
? ? ? ? TermPOS x = new TermPOS("a","b");
? ? ? ? t.put(new TermPOS("a","b"), 2);
? ? ? ? if(t.get(x) == null)System.out.println("wrong!"); //當(dāng)去掉hashCode的重寫(xiě)后就輸出這個(gè)
? ? ? ? else System.out.println(t.get(x));
? ? ? ? System.out.println(x.equals(new TermPOS("a","b")));
? ? }?
? ? public static void testSort()
? ? {
? ? ? ? TermPOS tp[] = new TermPOS[3];
? ? ? ? tp[0] = new TermPOS("b","c");
? ? ? ? tp[1] = new TermPOS("a","c");
? ? ? ? tp[2] = new TermPOS("a","b");
? ? ? ? Arrays.sort(tp,0,3);
? ? ? ? for(int i = 0;i < 3;i ++)
? ? ? ? ? ? System.out.println(tp[i].term+"\t"+tp[i].pos);
? ? }
? ? /**
? ? ?* @param args
? ? ?* @throws IOException?
? ? ?*/
? ? public static void main(String[] args) throws IOException {
? ? ? ? // TODO 自動(dòng)生成方法存根
? ? ? ? testHashtable();
? ? ? ? testSort();
? ? }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java字符串的替換replace、replaceAll、replaceFirst的區(qū)別說(shuō)明

    java字符串的替換replace、replaceAll、replaceFirst的區(qū)別說(shuō)明

    這篇文章主要介紹了java字符串的替換replace、replaceAll、replaceFirst的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Python機(jī)器學(xué)習(xí)三大件之二pandas

    Python機(jī)器學(xué)習(xí)三大件之二pandas

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)三大件之二pandas,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java?SM2加密相關(guān)實(shí)現(xiàn)與簡(jiǎn)單原理詳解

    Java?SM2加密相關(guān)實(shí)現(xiàn)與簡(jiǎn)單原理詳解

    SM2算法可以用較少的計(jì)算能力提供比RSA算法更高的安全強(qiáng)度,而所需的密鑰長(zhǎng)度卻遠(yuǎn)比RSA算法低,這篇文章主要給大家介紹了關(guān)于Java?SM2加密相關(guān)實(shí)現(xiàn)與簡(jiǎn)單原理的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java簡(jiǎn)單高效實(shí)現(xiàn)分頁(yè)功能

    Java簡(jiǎn)單高效實(shí)現(xiàn)分頁(yè)功能

    這篇文章主要介紹了Java簡(jiǎn)單高效實(shí)現(xiàn)分頁(yè)功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 詳解springboot中的jar包部署步驟

    詳解springboot中的jar包部署步驟

    這篇文章主要介紹了springboot中的jar包部署步驟及l(fā)inux中部署項(xiàng)目常用指令,需要的朋友可以參考下
    2018-07-07
  • Spring 應(yīng)用上下文獲取 Bean 的常用姿勢(shì)實(shí)例總結(jié)

    Spring 應(yīng)用上下文獲取 Bean 的常用姿勢(shì)實(shí)例總結(jié)

    這篇文章主要介紹了Spring 應(yīng)用上下文獲取 Bean,結(jié)合實(shí)例形式總結(jié)分析了Spring 應(yīng)用上下文獲取 Bean的實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • 淺談Java并發(fā)編程中的線程

    淺談Java并發(fā)編程中的線程

    這篇文章主要介紹了淺談Java并發(fā)編程中的線程,操作系統(tǒng)運(yùn)行一個(gè)程序,就會(huì)創(chuàng)建一個(gè)進(jìn)程,在一個(gè)進(jìn)程里可以創(chuàng)建多個(gè)線程,因此線程也叫做輕量級(jí)進(jìn)程,需要的朋友可以參考下
    2023-08-08
  • Java核心庫(kù)實(shí)現(xiàn)AOP過(guò)程

    Java核心庫(kù)實(shí)現(xiàn)AOP過(guò)程

    給大家分享一下利用Java核心庫(kù)實(shí)現(xiàn)簡(jiǎn)單的AOP的經(jīng)驗(yàn)分享和教學(xué),需要的讀者們參考下吧。
    2017-12-12
  • Java中super和this關(guān)鍵字詳解

    Java中super和this關(guān)鍵字詳解

    這篇文章主要介紹了Java中super和this關(guān)鍵字詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • java模擬實(shí)現(xiàn)斗地主發(fā)牌小程序

    java模擬實(shí)現(xiàn)斗地主發(fā)牌小程序

    這篇文章主要為大家詳細(xì)介紹了java模擬實(shí)現(xiàn)斗地主發(fā)牌小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論