`
zds420
  • 浏览: 203721 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Java 泛型之泛型受限制

    博客分类:
  • J2SE
阅读更多
package com.study.generics;

class GenericsControlClass<T> {	//T 泛型参数类型由外部指定
	
	private T variable;

	public T getVariable() {
		return variable;
	}

	public void setVariable(T e) {
		this.variable = e;
	}
 
	
	public String toString() {	//重写泛型类中的toString方法,
		return "泛型类的变量值为:"+this.variable;
	}
	
}

public class GenericsDemo05 {
	public static void main(String []args) {
		GenericsControlClass<String> controlClass = new GenericsControlClass<String>();
		controlClass.setVariable("泛型受限制");
		GenericsDemo05 demo05 = new GenericsDemo05();
		demo05.controlDisplay(controlClass);
		controlClass.setVariable("泛型受限制1");
		demo05.controlDisplay(controlClass);
		GenericsControlClass<Float> controlClass1 = new GenericsControlClass<Float>();
		controlClass1.setVariable(100.00f);
		//demo05.controlDisplay(controlClass1);//此处泛型受限制,抛出The method controlDisplay(GenericsControlClass<? extends String>) 
											//in the type GenericsDemo05 is not applicable for the arguments (GenericsControlClass<Float>)
	
		//此泛型受限制,且不可以传递Object对象
		//GenericsControlClass<Object> obj = new GenericsControlClass<Object>();
		//controlClass.setVariable(new Object("e2"));
		//demo05.controlDisplay(controlClass);
		//demo05.controlDisp(controlClass); 
                                //泛型不能向上转型
                                //GenericsControlClass<Object> obj1 = new GenericsControlClass<Object>();
                                 //obj1=controlClass;
	}
	
	public void controlDisplay(GenericsControlClass<? extends String> control) {	//泛型受限制,则使用extends 如:泛型类<? extends Object> 实例对象  泛型值可以使用String 和Object对象
		System.out.println(control);	//泛型类中不重写toString() 方法,则打印出来的是泛型类的对象。
	}
	
	public void controlDisp(GenericsControlClass<? extends Number> control) {	//泛型受限制,Number是所有数值型的基类,泛型参数类型可以为,Long ,Double,Float,等不可以为String等
		System.out.println(control);
	}
}

 

分享到:
评论

相关推荐

    java泛型深入.pdf

    Java泛型深入的内容涵盖泛型的基本概念、泛型类、接口、方法以及泛型的使用限制和高级特性。 首先,Java中的泛型允许定义方法、接口、类和变量时不指定具体的数据类型,而是在使用的时候再通过泛型类型参数来指定...

    java泛型学习

    总之,Java泛型通过类型检查和类型安全提供了更强大、更安全的代码。类型擦除确保了运行时性能不会因泛型而受到影响,而通配符则提供了处理不确定类型的能力。理解并有效利用这些概念对于编写高效、健壮的Java代码至...

    Java泛型深入研究

    Java 泛型是Java 5引入的一个重要特性,它允许在...总之,Java泛型是一种强大的工具,它提高了代码的类型安全性和可读性,同时减少了类型转换的需要。通过理解和熟练运用泛型,可以编写出更加健壮、可维护的Java程序。

    [Java泛型和集合].(Java.Generics.and.Collections).Maurice.Naftalin&Philip.Wadler.文字版

    `)则是在变量或方法调用中使用,表示未知但受限制的具体类型。两者在使用场景和作用上有显著区别。 #### 2.7 通配符捕获 通配符捕获是指在编译器遇到未知类型参数时,会自动将其转换为具体类型的过程。这一过程...

    Java泛型类与泛型方法的定义详解

    使用泛型方法时,至少返回值或参数有一个是泛型定义的,而且应该保持一致,否则可能会受到各种限制。 Java泛型类和泛型方法是Java编程语言中的一种重要概念,它们提高了代码的灵活性和可读性,使得开发者可以编写...

    不同Java泛型构造函数的详解

    而泛型构造函数是一个泛型构造函数,它带有一个泛型类型参数`E`,该参数是受限制的,需要实现`Rankable`和`Serializable`接口。 ```java public &lt;E extends Rankable & Serializable&gt; Entry(E element) { this....

    细细品味C#(泛型专题)

    《Thinking in Java》的作者 Bruce Eckel 曾经对 Java 的泛型表示怀疑,而 C# 的泛型因其简洁性和实用性受到很多开发者的青睐。 - **C# 泛型的特点**: - **虚拟机级别的支持**:C# 的泛型是在 CLR (Common ...

    Java 基础(4-8) - 泛型机制详解.pdf

    Java泛型是自JDK 1.5版本引入的一个重要特性,目的是为了提高代码的类型安全性和重用性。在Java中,泛型允许开发者在类、接口和方法中使用类型参数,使得代码能处理多种数据类型而无需重复编写相似的代码。然而,...

    给公司内部培训的PPT,JAVA技术,泛型

    泛型的发展受到了C++模板的启发,但与C++模板不同的是,Java中的泛型在运行时是被擦除的。这意味着在编译后的字节码中,泛型信息不会保留,因此泛型主要是为了提供编译时的类型检查和优化。在运行时,`List&lt;E&gt;`和`...

    java数组、泛型、集合在多态中的使用及对比

    1. **数组**支持多态引用,但添加或修改元素时受到限制。 2. **泛型**通过类型参数提供静态类型检查,但在多态引用上存在限制,但可以通过使用通配符进行部分解耦。 3. **集合**(如`List&lt;Object&gt;`)提供了最大的...

    JAVA核心编程技术-前十章8.ppt

    ”表示一个受限制的通配符,此处的“?”意为:通配符“?”只能是 A类及其子类作为泛型参数的泛型的父类,而不再是任意类型参数泛型的父类。 ### 2. 设置Java泛型通配符的下限 设置Java泛型通配符下限的关键字是...

    Java Generics Tutorial

    即便你对其他语言(如C++模板)中的类似特性有所了解,你也会发现Java泛型既有相似之处,也有其独特之处。对于初学者而言,没有先入为主的观念将有助于更好地理解和掌握Java泛型。 #### 简单泛型定义 泛型最常用于...

    C++泛型编程:源起、实现与意义 免积分

    早期的面向对象语言,如Java,通过使用单一基类(如`Object`)的方法来实现泛型容器,这种方式在C++中并不适用,原因在于: 1. **单根继承的限制**:C++中不强制实行单根继承,这意味着不能简单地通过所有对象继承...

    泛型的使用

    **类型擦除**是Java泛型的关键特性,意味着在编译后,泛型类型信息会被删除,只保留原始类型。这一机制使得Java的泛型与C++的模板机制有所区别,并导致了一些特殊的规则和限制: - **没有独立的泛型类Class对象**:...

    MapReduce,泛型,匿名内部类,Runnable和Callable

    通过泛型,我们可以限制容器类存储的数据类型,避免了强制类型转换,同时在编译时就能检测出可能的类型错误。例如,ArrayList就是泛型的一个实例,其中T代表一个类型参数,实际使用时可以替换为具体的类型如String或...

    初步理解Java的泛型特性

    Java的泛型特性是其语言的一个重要组成部分,自Java SE 1.5版本引入以来,极大地增强了代码的类型安全性,同时也提高了代码的可读性和复用性。...理解和熟练使用泛型是每个Java开发者必备的技能之一。

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    閱讀本文之前,如果自覺基礎不夠,可以補充閱讀適才提到的《Java泛型技術之 發展》,那是一篇非常完整的文章,可助您完整認識泛型技術的來龍去脈。 Sun JDK的泛型發展歷史要從 1.3版說起。該版本配合 GJ,正式...

    泛型集合的简单应用(电脑)

    在实际应用中,我们可以为泛型集合添加、删除、查找和遍历元素,所有这些操作都会受到类型限制。例如,我们可以这样添加一个Computer对象到集合: ```java Computer myComputer = new Computer("Dell", "Inspiron")...

    CPlus_to_Java_Converter;C++转java工具

    转换器需要将模板转换为Java的泛型,但要注意Java泛型的边界和限制。 4. **异常处理**:C++的异常处理与Java的有所不同。转换器需要将C++的try-catch-finally块转换为Java的异常处理机制。 5. **内存管理**:C++...

    Generics_in_the_Java_Programming_Language.pdf

    泛型不支持基本数据类型,比如int、long等,因为这些类型在Java中不是对象类型,而是Java泛型机制基于Java的类型系统设计。泛型集合在编译后会取消其泛型类型信息,而转为使用原始类型,例如List会变为List。 泛型...

Global site tag (gtag.js) - Google Analytics