Java 泛型实例

泛型

在写代码时有些时候同一种方法要根据不同的输入类型进行不同的返回,在没有泛型的情况下我认为有以下几种解决方式:

  1. 设置不同的类或不同的方法。
  2. 需要输入类型继承特殊接口。
  3. 将输入类型转化为Object传入,之后将输出再强转。

以上个点劣势1:代码过多,不便于维护 2:有效减少1中的代码,不过目标类的继承多至少一个接口,同样对于维护有压力  3:代码最少,目标类便于维护,但是在类型转换时会有类型安全问题。

为了更方便维护和更优雅的编码,在java5中java提供了一个新的特征:泛型。本文测试环境java9,同时很多语言都有泛型不过各有差别

基础应用

    泛型实例

public class Generic<T> {//设置T为接受类型,之后的T全为之后接收的类型

    public T t;

    public void set(T t){
        this.t = t;
    }

    public T get(){return t;}
}
public class demo {
    public static void main(String[] arg){
        Generic<String> g = new Generic<String>();//设置接受类型为String
        g.set("Demo Generic");//接受一个String
        System.out.println(g.get());//输出一个String
    }
}

运行结果 

Demo Generic

    泛型元组

简单地说就是一个类或者方法接收多个泛型

public class Generic<A, B, C> {

    public A a;
    public B b;
    public C c;

    public void set(A a, B b, C c){
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public A getA(){return a;}
    public B getB(){return b;}
    public C getC(){return c;}
}
public class demo {
    public static void main(String[] arg){
        Generic<String, Integer, Boolean> g = new Generic<String, Integer, Boolean>();
        g.set("Demo Generic", 21, true);
        System.out.println("A is : " + g.getA());
        System.out.println("B is : " + g.getB());
        System.out.println("C is : " + g.getC());
    }
}

运行结果

A is : Demo Generic
B is : 21
C is : true

    泛型在函数上的运用

public class Generic {
    public <A, B, C> String massage(A a, B b, C c){
        return a.toString() + " " + b.toString() + " " + c.toString();
    }
}
public class demo {
    public static void main(String[] arg){
        Generic g = new Generic();
        System.out.println(g.massage("Demo", 21, true));

    }
}

运行结果

Demo 21 true

    泛型接口

接口

public interface GenericInterface<T> {
    T massage(T t);
}
public class Generic implements GenericInterface<Integer> {

    @Override
    public Integer massage(Integer i) {
        return i;
    }
}
public class demo {
    public static void main(String[] arg){
        Generic g = new Generic();
        System.out.println("the number is : " + g.massage(21));

    }
}

测试结果

the number is : 21

 

转载于:https://my.oschina.net/u/3634161/blog/1822920

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值