java 类型通配符_java中泛型之类型通配符(?)
实体类
package cn.xy.model;
/**
* 生物类
* @author xy
*
*/
public class Living
{
private String name;
public Living(String name)
{
super();
this.name = name;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
@Override
public String toString()
{
return name;
}
}
/**
* 动物类
* @author xy
*
*/
public class Animal extends Living
{
public Animal(String name)
{
super(name);
}
}
/**
* 猫类
* @author xy
*
*/
public class Cat extends Animal
{
public Cat(String name)
{
super(name);
}
}
/**
* 狗类
* @author xy
*
*/
public class Dog extends Animal
{
public Dog(String name)
{
super(name);
}
}
测试类1
import java.util.ArrayList;
import java.util.List;
import cn.xy.model.Animal;
import cn.xy.model.Cat;
import cn.xy.model.Dog;
import cn.xy.model.Living;
public class Test
{
/**
* 虽Cat和Dog是Animal的子类,但List和List不是List的子类
* 直接为该方法传入List和List编译会错误 。
* 如List不是List的子类一样。
*/
public static void GetNames1(List animals)
{
for (Animal a : animals)
{
System.out.println(a.getName());
}
}
/**
* 该方法使用类型通配符,可以使用任何类型的List来调用它,其类型均为Object
*/
public static void GetNames2(List> animals)
{
for (Object obj : animals)
{
Animal a = (Animal) obj;
System.out.println(a.getName());
}
}
/**
* 该方法设置了类型通配符的上限,即传入的List的类型必须是Animal的子类或者Animal本身
*/
public static void GetNames3(List extends Animal> animals)
{
for (Animal a : animals)
{
System.out.println(a.getName());
}
}
/**
* 该方法设置了类型通配符的下限,即传入的List的类型必须是Animal的父类或者Animal本身
*/
public static void GetNames4(List super Animal> animals)
{
for (Object a : animals)
{
System.out.println(a);
}
}
public static void main(String[] args)
{
List cats = new ArrayList();
cats.add(new Cat("Tomcat"));
cats.add(new Cat("Tomcat2"));
List dogs = new ArrayList();
dogs.add(new Dog("Tomdog"));
dogs.add(new Dog("Tomdog2"));
List livings = new ArrayList();
livings.add(new Living("living1"));
livings.add(new Living("living2"));
// GetNames1(cats);
// GetNames1(dogs);
GetNames2(cats);
GetNames2(dogs);
GetNames3(cats);
GetNames3(dogs);
// GetNames4(cats);
// GetNames4(dogs);
GetNames4(livings);
}
}
测试类2
import java.util.ArrayList;
import java.util.List;
public class Test2
{
/**
* 添加的对象必须是和?一样的类型或者是其子类,但并不知道?是什么类型 所以lst.add会产生编译错误,故不能向其中添加对象
* null值是一个例外,因为null是所有引用类型的实例
*/
public static void main(String[] args)
{
List> lst = new ArrayList();
// lst.add("str");
}
}
java 类型通配符_java中泛型之类型通配符(?)相关推荐
- java 文件通配符_Java中泛型通配符的使用方法示例
本文实例讲述了Java中泛型通配符的使用方法.分享给大家供大家参考,具体如下: 一 点睛 引入通配符可以在泛型实例化时更加灵活地控制,也可以在方法中控制方法的参数. 语法如下: 泛型类名 extend ...
- java 继承示例_Java中的继承类型以及示例
java 继承示例 Prerequisite: Inheritance and its implementation in Java 先决条件: 继承及其在Java中的实现 Java中的继承类型 (T ...
- java double 计算_Java中的Double类型计算
一.问题的提出: 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...
- java 鸭子类_Java中实现鸭子类型机制
"当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就可以被称为鸭子."[引用维基] 一般而言,鸭子类型机制常见/用于动态语言,如Python.Ruby.JS.来 ...
- java 通配符 泛型_java中泛型之类型通配符(?)
实体类 package cn.xy.model; /** * 生物类 * @author xy * */ public class Living { private String name; publ ...
- java枚举类型定义_java中的枚举类型怎么定义?
展开全部 Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自62616964757a686964616fe59b9ee7ad9431333236366331己的变量, ...
- java类加密_Java中常用加密类型
1.对称加密 image.png 密钥:加解密钥相同 缺点:无法确保密钥被安全传递 常用算法:DES.3DES(TripleDES).AES等 2.非对称加密 image.png image.png ...
- Java如何给Mysql中插入year类型数据
文章目录 Java如何给Mysql中插入year类型数据 实际问题: 解决方案: 从数据库中读取year类型数据到Java 从Java中往数据库存储year数据 Java如何给Mysql中插入year ...
- java 类型擦除_java中的类型擦除type erasure
简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度. 泛型可以用在类和接口上,在集合类中非常常见.本文将会讲解泛型导致的 ...
最新文章
- Hibernate学习笔记(一)----针对不同的数据库不同的配置
- TCP三次握手,四次分手
- 集群scan_扫描k8s集群中的漏洞
- python整数类型-python基础数据类型一(整数类型和布尔值)
- 谈谈我对sku的理解(3)----页面效果
- [java进阶]2.Jedis基础与List的接口
- OpenCV_轮廓的查找、表达、绘制、特性及匹配
- 自定义View调用onDraw方法
- Stm32——keil5项目创建步骤
- java怎么连高斯数据库_Gauss DB 数据库使用(二) Data Studio
- Android keyevent值中文表
- RSF 异步访问性能分析报告 - 百兆网卡下的彪悍性能
- 叹20年奶茶江湖纷争,入局奶茶行业仍有机会
- QScrollBar垂直滚动条简单样式定制
- matlab自带的插值函数interp1的四种插值方法
- Git push错误,Unauthorized fatal: Could not read from remote repository.未验证不能提交
- 存储过程之八-java代码调用oracle存储过程
- 英语Canutillos祖母绿canutillos单词
- OA系统,架起企业异地办公的桥梁
- 每日思考第 63 期:物理空间限制精神世界的发展