java泛型的格式_java中什么是泛型,怎么用泛型?

1.为什么会有泛型呢?

早期的Object类型可以接受任意的对象类型,但是在实际使用中,会有类型转化的问题,存在隐患,所以Java提供泛型解决这个安全问题

2.什么是泛型?

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

3.泛型的使用

泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法

(1) 泛型类

把泛型定义在类上

格式:public class类名

注意:泛型类型 必须是引用类型

//一个泛型类

public class ObjectTool {

private E obj;

public E getObj() {

return obj;

}

public void setObj(E obj) {

this.obj = obj;

}

}

// 泛型类测试

public class ObjectToolDemo {

public static void main(String[] args) {

ObjectTool obj=new ObjectTool();

obj.setObj("张三");

String s=obj.getObj();

System.out.println(s);

}

}

(2)泛型方法

把泛型定义在方法上

格式:public返回类型 方法名(泛型类型)

//泛型方法

public class ObjectTool{

public void show(T t) {

}

}

//测试

public class ObjectToolDemo {

public static void main(String[] args) {

ObjectTool obj=new ObjectTool();

obj.show(1);

obj.show("hello");

obj.show(true);

}

}

(3)泛型接口

把泛型定义在接口上

格式:public interface接口名

//定义泛型接口

public interface Inter {

public abstract void show(T t);

}

//实现接口

public class InterfaceImpl implements Inter{

public static void main(String[] args) {

}

public void show(T t) {

}

}

//测试

public class InterfaceDemo {

public static void main(String[] args) {

//接口测试

Inter i=new InterfaceImpl();

i.show("hello");

Inter i2=new InterfaceImpl();

i2.show(100);

Inter i3=new InterfaceImpl();

i3.show(true);

}

}

4.泛型的好处

Java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。

1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

5. 泛型通配符

泛型通配符>

任意类型,如果没有明确,那么就是Object以及任意的Java类

//泛型如果明确写的时候,前后需要一致

Collection c1=new ArrayList();

//Collection c2=new ArrayList();

//Collection c3=new ArrayList();报错

//Collection c4=new ArrayList();

//?表示任意类型都是可以的

Collection> c2=new ArrayList();

Collection> c3=new ArrayList();

Collection> c4=new ArrayList();

? Extends E

向下设定,E及其子类

//? Extends E

Collection extends Animal> c5=new ArrayList();

Collection extends Animal> c6=new ArrayList();

Collection extends Animal> c7=new ArrayList();

? super E

向上设定,E及其父类

//向上设定,E及其父类

Collection super Animal> c8=new ArrayList();

Collection super Animal> c9=new ArrayList();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值