千家信息网

Java在重载中如何使用Object

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Java在重载中如何使用Object,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在重载中使用Objec
千家信息网最后更新 2026年11月03日Java在重载中如何使用Object

小编给大家分享一下Java在重载中如何使用Object,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在重载中使用Object

JAVA中调用重载方法都是先匹配同类型参数的方法,如没有才会向上转型去匹配参数。

例:

public void remove(int i) {    ...}public void remove(Object object) {    ...}
    int i = 0;    Integer it = 0;    remove(i); //调用了 remove(int i) 方法    remove(it); //调用了 remove(Object object) 方法

在开发中遇到了两个方法

public boolean lSet(List value) {    ...}public boolean lSet(Object) {    ...}

调用时:

    List list = new ArrayList<>();    list.add(1);    list.add(2);    lSet(list);  //调用了lSet(Object)

调用了lSet(Object) 而不是lSet(List value)

不是说先匹配类型相同的吗?

注意重载方法中的参数List value List指定了泛型Object,但调用时传入的是List此时并不算同一种类型。

解决办法

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

Object的使用:重载equals、hashCode及实现compareTo

这里主要介绍Java中使用Hashtable、Arrays.sort时候如果键值涉及到对象、类时候的处理办法:

1.重载equals():java中默认的对象的equals是当指向同一内存地址时才为true;如果你现在需要利用对象里面的值来判断是否相等,则重载equal方法。

2.重载hashCode():只有当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重载hashCode,原因:就HashMap来说,好比HashMap就是一个大内存块,里面有很多小内存块,小内存块里面是一系列的对象,可以利用hashCode来查找小内存块hashCode%size(小内存块数量),所以当equal相等时,hashCode必须相等,而且如果是object对象,必须重载hashCode和equal方法。

3.实现接口Comparable:当需要调用sort()之类的函数要用到对象的比较的基本操作时候,就需要对Object的compareTo(Object arg0)进行实现。

4.binarySearch使用注意:由于Arrays.binarySearch(Object array[],Object key)中没有给定查找数组的范围,据我估计可能是0到length-1,因而数组最好是都能填满对象,如果部分为空(数组开的过大)则会出错。而且搜索前要调用sort函数排序一下。因为数组长度和对象个数相同,所以sort(Object [])也不用给定范围而全部排序。

下面是一个简单的例子

public class TermPOS implements Comparable{    public String term;    public String pos;    public TermPOS(String a,String b)    {        term = a;        pos = b;    }    //用于调用Arrays.sort(Object[])时的自定义大小,此时类后加上implements Comparable    public int compareTo(Object arg0) {        // TODO 自动生成方法存根        if(this.term.compareTo(((TermPOS)arg0).term) != 0)            return this.term.compareTo(((TermPOS)arg0).term);        return this.pos.compareTo(((TermPOS)arg0).pos);    }        //当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重载hashCode    public int hashCode()    {        return term.hashCode()*pos.hashCode();    }    //如果你现在需要利用对象里面的值来判断是否相等,则重载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 t = new Hashtable();        TermPOS x = new TermPOS("a","b");        t.put(new TermPOS("a","b"), 2);        if(t.get(x) == null)System.out.println("wrong!"); //当去掉hashCode的重写后就输出这个        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 自动生成方法存根        testHashtable();        testSort();    }}

以上是"Java在重载中如何使用Object"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

方法 对象 内存 数组 参数 时候 篇文章 类型 相同 内容 函数 办法 存根 结构 自动生成 范围 排序 生成 不怎么 不用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技学校 智慧科技互联网 睿民互联网科技 长亮科技 互联网金融 互联网科技大会案例 居家互联网科技有限公司 西藏七维空间互联网科技有限公司 深圳国际航运科技和互联网 佳云科技和互联网广告 互联网公司科技股 河南猎农互联网科技有限公司 武汉健翔互联网络科技有限公司 湖南一路畅行互联网科技 和信科技工业互联网 互联网科技扶贫时间 工业互联网等科技实现智能化赋能 易企秀互联网科技是做什么的 福仕德教育科技互联网 互联网领先科技成果宣传视频 互联网 科技节活动 微视频大赛 卓越科技(互联网 ) 南京欣网互联网科技 云创客互联网科技公司 智腾互联网科技有限公司 互联网科技革命什么开始 玉溪新华互联网科技好不好 特约风豹互联网科技为什么扣费 互联网金融科技元年 产业互联网科技服务公司 互联网大会出现的黑科技
0