java基础之泛型的继承

关于泛型的基本介绍和理解请参考以下几篇文章,或查询更多资料:

泛?型?与?泛?型?继?承

泛型(包括泛型抽象类的继承)

泛型的继承测试

本篇以简单的List<>方式来进行说明。

ArrayList<Object>继承了List<Object>,

ArrayList<String>没有继承List<Object>

List<?>等价于List<? extends Object>

请参考以下代码:

/**
 * author Ding Chengyun
 * 2014-2-27
 */
package test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @author Ding Chengyun
 * 2014-2-27L
 */
public class ListTest {

	public void method1(List<Object> list) {

	}
	public void method2() {
		method1(new ArrayList<Object>());
		method1(new ArrayList<String>()); //会编译报错
		method1(new LinkedList<Object>());
	}

	public void method3(List<? extends Object> list) {

	}
	public void method4() {
		method3(new ArrayList<Object>());
		method3(new ArrayList<String>());
		method3(new LinkedList<Integer>());
	}

	public void method5(List<?> list) {//泛型中?等价于? extends Object

	}
	public void method6() {
		method5(new ArrayList<Object>());
		method5(new ArrayList<String>());
		method5(new LinkedList<Integer>());
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>(20);
	}

}

java基础之泛型的继承

时间: 2024-08-04 20:11:02

java基础之泛型的继承的相关文章

java基础之泛型用法

1.什么是泛型 泛型是java中保障类型安全的一种机制.它通过对变量类型的假设,实现变量类型的进行限制,从而在一定程度上保证程序编译时变量类型的安全.反之,如果没有泛型,这些假设则只存在于程序员的大脑中,这样会导致类型转换的异常在程序运行时才被发现. //不用泛型 List list1 = new ArrayList(); list1.add(1); Object o = list1.get(0); //返回Object类型对象 Integer i = (Integer) o; //需预先知道类

Java基础:泛型

Java的泛型是什么呢, 就是类型的参数化,这得类型包括方法参数和返回值,也就是原本该是确定类型的地方换成了变量,把类型的确定时间向后延迟了. 在之前,学过"重载"的概念,重载是什么呢,举例来说 public class Test{ // 处理整型数据 void receive(int i) { System.out.println("Received one int data"); System.out.println("i="+i); } /

Java基础10 接口的继承与抽象类(转载)

接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{    void addWater(int w);    void drinkWater(int w);} 我们在继承Cup的基础上,定义一个新的有刻度的杯子的接口,MetricCup 接口如下: interface MetricCup extends Cup{    int WaterContent

Java基础巩固----泛型

注:参考书籍:Java语言程序设计.本篇文章为读书笔记,供大家参考学习使用   1.使用泛型的主要优点是能够在编译时而不是在运行时检查出错误,提高了代码的安全性和可读性,同时也提高了代码的复用性. 1.1如何理解泛型的使用提高了代码的安全性? 答:例如这样一段代码: ArrayList<Date> arrayList = new ArrayList<Date>(); arrayList.add(new Date()); arrayList.add("data")

Java基础学习之(6)--继承+访问权限

一.继承的相关概念: B继承A可以描述为:B是一种A,B是一种A的继承关系,B从A继承. 子类自动拥有基类(父类)的所有成员(包括成员变量和成员方法). java只支持单继承,c++支持多继承,但是Java有多种语义存在.  child类中n_private=10是错的,因为子类拥有父类私有变量的访问权,但是没有使用权:即私有变量,只在父类对象中可以访问!!!  二.访问控制: 对象成员的权限有private,default,protected,public. 类的权限只有public,defa

Java基础:泛型详解

泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用.什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”.一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参.那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参).泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型).也

黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API

一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 2.泛型技术是给编译器使用的技术,用于编译时期,确保类型的安全. 3.泛型的擦除:运行时,会将泛型去掉,生成class文件中的是不带泛型的,这个称为“泛型的擦除”.擦除泛型的原因是为了兼容运行时的类加载器. 4.泛型的好处:(1)将运行时期出现的问题ClassCastException,转移到了编译时期.方便于程序员解决问题,让运行时期问题减少.安全.(2)避免了强制转换的麻烦. 5.泛

Java基础10 接口的继承与抽象类

链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的继承是基于类的.interface接口同样可以继承

Java基础:泛型及其擦除性、不可协变性

转载请注明出处:jiq?钦's technical Blog 1泛型语法: 泛型类: class ClassName<T>{} 泛型方法:public <T> void f(T x){} 基本指导原则:如果使用泛型方法可以取代将整个类泛型化,那么就应该使用泛型方法,因为它可以让事情更加清楚. 2为什么使用泛型? 在Java SE1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的