`

泛型——设定类型形参的上限。

 
阅读更多
import java.util.ArrayList;
import java.util.List;


/**
 * 泛型——设定类型形参的上限。
 * ?类型形参在集合里使用Map<?,?>/List<? extends String>
 * */
abstract class Fruit
{
	abstract void getName();
}
class orange2 extends Fruit
{

	@Override
	void getName() {
		
		System.out.println("橘子");;
	}
	
}
class  banana extends Fruit
{
	@Override
	void getName() {
		System.out.println("香蕉");
		
	}
}
class  Sell 
{
	//类型只能是是 Fruit的子类。
	public void sellAll(List<? extends Fruit> fruit)
	{
		for (Fruit fruit2 : fruit) {
			fruit2.getName();
		}
	}
}

public class Annotation {
	
	public static void main(String[] args) {
		List<Fruit> olist = new ArrayList<Fruit>();
		olist.add(new orange2());
		olist.add(new banana());
		new Sell().sellAll(olist);//橘子  香蕉
		
		ArrayList<orange2> o = new ArrayList<orange2>();
		o.add(new orange2());
		new Sell().sellAll(o);//橘子
	}
	

}

 

分享到:
评论

相关推荐

    泛型讲解 类型通配符

    泛型是Java语言中的一种机制,它允许在定义类、接口时指定类型形参,这个类型形参将在声明变量、创建对象时确定。泛型的引入解决了Java集合的缺陷,即集合会“忘记”对象的类型,导致ClassCastException。 泛型的...

    java 泛型类的类型识别示例

    在Java编程语言中,泛型(Generics)是一种强大的特性,它允许我们在编写代码时指定容器(如集合)可以存储的数据类型。这提高了代码的安全性和效率,因为编译器可以在编译时检查类型,避免了运行时...

    泛型链表——C语言实现

    使用C语言实现的“泛型链表”,该链表为循环双链表,它的设计参考了C++的STL容器库中的容器list及泛型算法的接口,并使用迭代器来遍历链表。使用时只需要include头文件即可,隐藏了List类型的具体实现。用户并不需要...

    Generic_2(泛型类-泛型方法-泛型接口-泛型限定(上限)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    【Flutter】Dart 泛型 ( 泛型类 泛型方法 特定类型约束的泛型 ).zip

    【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 ) https://hanshuliang.blog.csdn.net/article/details/114059611 博客源码快照

    C#2.0 泛型和强制类型转换C#2.0 泛型和强制类型转换

    ### C#2.0 泛型和强制类型转换 #### 泛型介绍 在C#2.0中,泛型是一种强大的特性,它允许程序员编写类型安全且高度可重用的代码。通过使用泛型,可以创建参数化的类型,这意味着在类、接口或方法中可以使用类型参数...

    Java8新特性之泛型的目标类型推断_动力节点Java学院

    Java8新特性之泛型的目标类型推断_动力节点Java学院,动力节点口口相传的Java黄埔军校

    Generic_3(泛型限定(下限)-泛型限定(上限的体现)-泛型限定(下限的体现)-泛型限定(通配符的体现)-集合查阅的技巧)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    泛型类型转换Demo

    在Java编程语言中,泛型是一种强大的特性,它允许我们在编写代码时定义类型参数,从而增强代码的灵活性、安全性和可读性。泛型在集合框架中尤其常见,如List、Set和Map等接口,它们可以接受特定类型的元素,防止在...

    java泛型、原始类型、桥接方法

    Java 泛型、原始类型、桥接方法 Java 泛型是 Java 语言中的一种重要特性,用于在编译时检查类型安全性,避免 ClassCastException 的出现。下面将详细介绍 Java 泛型、原始类型和桥接方法。 Java 泛型 Java 泛型...

    Java中的泛型(csdn)————程序.pdf

    Java中的泛型是自JDK 5.0版本引入的一项重要特性,它允许在定义类、接口和方法时声明参数类型,从而增强了代码的类型安全性和可读性。泛型的使用大大减少了运行时类型转换异常(ClassCastException)的可能性,并...

    Java8新特性探究-泛型的目标类型推断.doc

    ### Java 8 新特性探究——泛型的目标类型推断 #### 概述 Java 8 引入了一系列的新特性,其中泛型的目标类型推断(Target Type Inference)是一项重要的改进,它使得开发者在编写使用泛型的代码时更加简便高效。在...

    用泛型比较各种数据类型

    在C#编程中,泛型是一种强大的特性,它允许我们创建可重用的代码,这些代码可以在多种数据类型上工作,而无需显式地转换。本文将深入探讨如何使用泛型进行各种数据类型的比较,以及如何增强代码的可扩展性。 泛型在...

    Java如何获取泛型类型

    Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现的接口获取泛型参数 定义一个泛型父类: public interface SuperClass { String ...

    Java泛型类型擦除后的补偿

    在Java编程语言中,泛型是一种强大的特性,它允许我们在定义类、接口和方法时引入类型参数,从而实现参数化类型。然而,Java的泛型并非像C++或C#那样在运行时存在,而是在编译期间经历一个称为“类型擦除”的过程。...

    博客《夯实JAVA基本之一——泛型详解(1)》对应源码

    总的来说,《夯实JAVA基本之一——泛型详解(1)》的博客源码提供了对Java泛型的深入学习机会,包括类型参数、类型安全、代码复用、边界通配符和类型擦除等关键概念。通过学习这些知识,开发者可以更好地设计和实现...

    解析Java泛型的类型擦除.pdf

    在 Java 语言中,泛型类型擦除的机制使得开发者难以理解和使用泛型,例如,在 Java 中,我们可以定义一个泛型类 `ArrayList&lt;T&gt;`,其中 `T` 是类型参数,但是,在编译后的字节码文件中,泛型类型信息已经被擦除,所有...

    基于C#编程建立泛型Vector数据类型及对应处理方法

    《基于C#编程建立泛型Vector数据类型及对应处理方法.docx》 详细介绍了Vector; 《Vector.cs》 是本博客的核心代码,编写了Vector类及其相关的方法; 《Program.cs》 是本博客中调用Vector类的代码,也是用来验证...

    looly#hutool-site#泛型类型工具-TypeUtil1

    介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla

    JVM如何理解Java泛型类.doc

    #### 四、JVM如何理解泛型概念 —— 类型擦除 为了理解JVM如何处理泛型,我们需要了解一个重要的概念:“类型擦除”(Type Erasure)。类型擦除是指编译器在编译过程中去除所有泛型信息的过程。这一过程使得JVM不必...

Global site tag (gtag.js) - Google Analytics