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 泛型之泛型受限制
猜你喜欢
转载自zds420.iteye.com/blog/1109867
周排行