java中的泛型方法

本文探讨了Java中泛型编程的概念与实践,包括如何使用泛型方法进行两个数的置换,创建泛型类MemoryCell,以及使用Comparable接口查找数组中的最大值。通过实例演示了如何利用包装类处理基本类型,并深入讲解了Comparable接口的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

泛型编程是通过使用继承的一些基本概念来完成的,

这会学习的是java中使用继承的基本原则来实现泛型方法的。

两个数的置换。

public  static void swap(Object a,Object b){
    Object temp = a;
    a = b;
    b = temp;
    
}

java中的基本思想是通过使用像Object这样适当的超类来实现泛型类。

public class MemoryCell {

        private Object storeValue;
        public Object get () {
            return storeValue;

        }
        public void set (Object x){
            storeValue = x;

        }
    }

public class TestMemoryCell() {
    public static void main(String[] args){

        MemoryCell m = new MemoryCell();

        m.set("123");

        String val=(String) m.get();

        System.out.println("Contents are : " + val);

    }
}

在这个TestMemoryCell类中,描述了一个main方法,将字符串“123”写到

MemoryCell对象中,然后又重MemoryCell对象中读出。当然此处也可以不必

强制转换,可以调用toString()方法,这种调用对任意对象都是能够做到的。

 

public class WrapperExamp {

public static void main(String[] args){

    MemoryCell m = new MemoryCell();

    m.set(new Integer(123));

    Integer wrapperVal = (Integer)m.get();


    int val = wrapperVal.intValue();


    System.out.println("Contents are: " + val);


}

}

基本类型不能作为Object类进行传递,因为只有引用类型才能够

与Object类相容,java中的 8 种基本类型都不能。这个问题的解决方法

是利用java为这 8种基本类型的每一个所提供的对应包装类。

例如int类的包装类是Integer。

每个包装类其状态都是绝不能变得,它储存一种但该对象被构建时所设置得原值,

并提供了一种方法以重新获得该值。

包装类中也包含不少的静态使用方法。

使用Comparable接口类型表示泛型


只有但是用Object类中已有的方法来表示执行的操作时,才能使用Object类
作为泛型类型工作。
这里是Comparable 接口类型找数组元素中的最大值,可以使用compareTo方法,
它在实现Comparable接口的类中加以实现,故他对所有的Comparable接口都有
现成可以用的。
public class FindMaxExamp {

    public static Comparable findMax(Comparable [] a){

        int k = 0;
        for(int i = 1;i < a.length; i++)

        if(a[i].compareTo(a[k]) > 0)
            k=i;
        return  a[k];


    }
    public static void main(String[] args){

        Shape[] sh1 = {new Circle(2.0),new Square(3.0),new Rectangle(3,4)};

        String[] st1 = {"Joe", "Bob", "Bill" , "Zeke"};

        System.out.println(findMax(sh1));
        System.out.println(findMax(st1));
    }
}

1. 只有实现了Comparable接口的对象才能作为数组元素进行参数传递。

仅有compareTo方法但未宣称实现Comparable接口的对象不是属于Comparable,

因为它不具有必要的IS-A关系。

Circle,Square,Rectangle都是Shape的子类。

2. 若属于Comparable接口类型的数组有两个不相容的对象对象,

那么compareTo方法将抛出异常ClassCast、Exception。

3.基本类型是不能作为Comparable接口类型进行传递的,但包装类可以,因为

它们实现了接口。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值