简单泛型、泛型方法、泛型类、泛型接口的知识点


有许多原因促成了泛型的出现,其中最引人注目的就是创造容器类。

泛型的主要目的就是为了用来指定容器要持有什么类型的对象

一、简单泛型

public class Genericity {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List list=new ArrayList();
		list.add(new Cat());
		list.add(new Dog());
	}

}
class Cat{}
class Dog{}

在List集合中,可以持有不同类型的对象,但是编译器会报警告(ArrayList 是原始类型。应该将对通用类型 ArrayList<E> 的引用参数化),这里就提示我们需要给出一个具体的泛型,来约束容器的持有对象,提高安全性。
public class Genericity {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List<Cat> list=new ArrayList<>();
		list.add(new Cat());
		list.add(new Dog());
	}

}
class Cat{}
class Dog{}

在这个代码中,list.add(new Dog());这行就会报错,原因是加入了泛型,只能添加泛型的对象或其泛型的子类对象。

二、泛型方法

泛型方法跟加个Object修饰输入参数基本效果相同:

public class Genericity {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Cat cat=new Cat();
                Dog dog=new Dog();
               Genericity.run( cat);          <pre name="code" class="java">                Genericity.run( dog);
}public static<T> void run(T A){System.out.println(A);}}class Cat{}
class Dog{}

 

只是推荐使用泛型这种方式。

三、泛型类

当我们不清楚要具体使用什么类时,与其用Object,我们更喜欢使用暂定不指定类型,在这里我们就需要使用到泛型类了

public class Genericity {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Person<Man> man=new Person<>(new Man());
		man.getPerson();
	}
}
class Man{
	
}
class Person<T>{
	private T person;
	public Person(T person){
		this.person=person;
	}
	public T getPerson() {
		return person;
	}
	public void setPerson(T person) {
		this.person = person;
	}
	
}

需要值得注意的是,在实例化泛型类时,必须给泛型确定类,不然将会报错。

四、在泛型接口中

泛型接口的使用跟泛型类基本没有什么区别,并且在工厂方法设计模式中也会用到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值