Java泛型通配符super使用Demo
来源:互联网 发布:电脑的网络图标不见了 编辑:程序博客网 时间:2024/05/16 10:36
class GenClassDemo4
{
public static void main(String[] args)
{
SupGen<? super Dog> sg=new SupGen<Dog>();
sg.setVar1(new Dog());
sg.getVar1().tell();
//SupGen<? super Dog> sg=new SupGen<Cat>();
/*GenClassDemo4.java:5: 错误: 不兼容的类型: SupGen<Cat>无法转换为SupGen<? super Dog>
SupGen<? super Dog> sg=new SupGen<Cat>(); ?只接受符合规则的类型。才能通配*/
}
}
class SupGen<T extends Animal & IAnimal>
//class SupGen<T super Dog>
//类声明的时候只能是先有父类再有子类。只能有extends。 这里不能有super。只有使用通配符"?",在使用的过程中才能使用。
/*
//class SupGen<T extends Animal>
和 class SupGen<T extends Animal & IAnimal>是有差别的。下面这个规定的这个泛型类必须还得实现接口,是接口的实现类。
如果没有这个&IAnimal :SupGen<? super Dog> sg=new SupGen<Dog>(); sg.tell()会报错:
GenClassDemo4.java:8: 错误: 找不到符号
sg.getVar1().tell();
^
符号: 方法 tell()
位置: 类 Animal :因为getVar1()得到的T对象,只是一个继承Animal类的对象。而没有实现IAnimal,没有tell方法。
*/
//这里不能将extends改为super 。虽然只是规定的泛型。只有使用的时候才可以使用super.
{
private T var1;
public void setVar1(T var1){
this.var1=var1;
}
public T getVar1(){
return var1;
}
}
interface IAnimal
{
public void tell();
}
abstract class Animal
{
private String name;
public abstract void eat();
}
class Dog extends Animal implements IAnimal
{
public void eat(){
System.out.println("啃骨头");
}
public void tell(){
System.out.println("接口:Dog正在吃鱼");
}
}
class Cat extends Animal implements IAnimal
{
public void eat(){
System.out.println("吃鱼");
}
public void tell(){
System.out.println("接口:cat正在吃鱼");
}
}
{
public static void main(String[] args)
{
SupGen<? super Dog> sg=new SupGen<Dog>();
sg.setVar1(new Dog());
sg.getVar1().tell();
//SupGen<? super Dog> sg=new SupGen<Cat>();
/*GenClassDemo4.java:5: 错误: 不兼容的类型: SupGen<Cat>无法转换为SupGen<? super Dog>
SupGen<? super Dog> sg=new SupGen<Cat>(); ?只接受符合规则的类型。才能通配*/
}
}
class SupGen<T extends Animal & IAnimal>
//class SupGen<T super Dog>
//类声明的时候只能是先有父类再有子类。只能有extends。 这里不能有super。只有使用通配符"?",在使用的过程中才能使用。
/*
//class SupGen<T extends Animal>
和 class SupGen<T extends Animal & IAnimal>是有差别的。下面这个规定的这个泛型类必须还得实现接口,是接口的实现类。
如果没有这个&IAnimal :SupGen<? super Dog> sg=new SupGen<Dog>(); sg.tell()会报错:
GenClassDemo4.java:8: 错误: 找不到符号
sg.getVar1().tell();
^
符号: 方法 tell()
位置: 类 Animal :因为getVar1()得到的T对象,只是一个继承Animal类的对象。而没有实现IAnimal,没有tell方法。
*/
//这里不能将extends改为super 。虽然只是规定的泛型。只有使用的时候才可以使用super.
{
private T var1;
public void setVar1(T var1){
this.var1=var1;
}
public T getVar1(){
return var1;
}
}
interface IAnimal
{
public void tell();
}
abstract class Animal
{
private String name;
public abstract void eat();
}
class Dog extends Animal implements IAnimal
{
public void eat(){
System.out.println("啃骨头");
}
public void tell(){
System.out.println("接口:Dog正在吃鱼");
}
}
class Cat extends Animal implements IAnimal
{
public void eat(){
System.out.println("吃鱼");
}
public void tell(){
System.out.println("接口:cat正在吃鱼");
}
}
0 0
- Java泛型通配符super使用Demo
- Java-泛型编程-使用通配符? extends 和 ? super
- Java-泛型编程-使用通配符? extends 和 ? super
- Java-泛型编程-使用通配符? extends 和 ? super
- Java 泛型通配符extends 与 super
- Java泛型通配符extends与super
- Java泛型通配符extends与super
- Java泛型通配符extends与super
- Java泛型通配符extends与super
- Java泛型通配符extends与super
- Java泛型通配符extends与super
- Java泛型通配符extends与super
- JAVA泛型通配符 extends 和 super
- Java泛型通配符<? extends T>与<? super T>
- Java泛型通配符<? extends T>与<? super T>
- Java泛型通配符<? extends T>与<? super T>
- Java泛型通配符<? extends T>与<? super T>
- java泛型中的通配符 extends与super
- BestCoder Round #75-King's Cake(模拟)
- Android 5.x之 Notification
- Java虚拟机内存模型
- 我的第一个C++程序
- 多线程 : 进程同步
- Java泛型通配符super使用Demo
- MR代码实例-wordcount
- 【HDU-1863】畅通工程(最小生成树prim)
- 深入理解JVM—JVM内存模型
- 进程和线程的区别和联系
- 为什么ES不适合做数据存储
- Info.plist与Prefix.pch修改文件位置遇到的问题及解决方法
- MTD,文件系统,存储器分区的个人理解
- 8.定制new和delete