Java 泛型与通配符 定义与使用
一、泛型
- 定义:
把类型明确的工作推迟到创建对象或调用方法时才明确的类型,简而言之,未明确的数据类型。 - 类型:
泛型类,泛型方法,方形接口。 - 格式
- 泛型类格式:class 类名<E变量>{}
- 泛型方法格式:修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型))
- 泛型接口格式:修饰符 interface 接口名<>
- 使用:
泛型类:
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
/**
* Constructs an empty list with the specified initial capacity.
*
* @param initialCapacity the initial capacity of the list
* @throws IllegalArgumentException if the specified initial capacity
* is negative
*/
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
}
泛型方法:
public class WideType {
public static void main(String[] args) {
WideType m=new WideType();
m.method(1);
m.method("倪妮");
m.method(true);
m.method(8.8);
System.out.println("--------");
method2(8);
method2("蔡卓亦的微笑");
method2(9.9);
method2("l love java");
}
public <E> void method(E e){
System.out.println(e);
}
public static <E> void method2(E e){
System.out.println(e);
}
}
泛型接口:
public interface Iterator<E> {
boolean hasNext();
E next();
}
二、通配符 ?
- 定义:
代表任意的数据类型;不能创建对象使用,只能在方法中使用 - 使用
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("倪妮");
list.add("真漂亮!");
list.add("feel");
ArrayList<Integer> list3=new ArrayList<>();
list3.add(2);
list3.add(0);
print(list);
print(list3);
}
public static void print(ArrayList<?> list2){
Iterator<?> it=list2.iterator();
while(it.hasNext()){
Object next = it.next();
System.out.println(next);
}
}
Java 泛型与通配符 定义与使用的更多相关文章
- Java泛型和通配符那点事
泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法 ...
- Java 泛型、通配符? 解惑
Java 泛型通配符?解惑 分类: JAVA 2014-05-05 15:53 2799人阅读 评论(4) 收藏 举报 泛型通配符上界下界无界 目录(?)[+] 转自:http://www.linux ...
- JAVA 泛型与通配符的使用
泛型的本质是参数化类型.即所操作的数据类型被指定为一个参数. 1.jdk 1.5/1.6 必须显式的写出泛型的类型. 2.jdk 1.7/1.8 不必显式的写出泛型的类型. 一.泛型声明 可以用< ...
- java 泛型的通配符和限定
package cn.sasa.demo1; import java.util.ArrayList; import java.util.Collection; import java.util.Ite ...
- Java泛型之通配符
原文点此链接 使用通配符的原因:Java中的数组是协变的,但是泛型不支持协变. 数组的协变 首先了解下什么是数组的协变,看下面的例子: Number[] nums = new Integer[10]; ...
- Java 泛型和通配符解惑
转自:http://www.linuxidc.com/Linux/2013-10/90928.htm T 有类型 ? 未知类型 一.通配符的上界 既然知道List<Cat>并不是Lis ...
- java 泛型与通配符(?)
泛型应用于泛型类或泛型方法的声明. 如类GenericTest public class GenericTest<T> { private T item; public void set( ...
- java泛型之通配符?
一.在说泛型通配符" ?" 之前先讲几个概念 1.里氏替换原则(Liskov Substitution Principle, LSP): 定义:所有引用基类(父类)的地方必须能透明 ...
- java 泛型: 通配符? 和 指定类型 T
1. T通常用于类后面和 方法修饰符(返回值前面)后面 ,所以在使用之前必须确定类型,即新建实例时要制定具体类型, 而?通配符通常用于变量 ,在使用时给定即可 ? extends A : 通配符上 ...
- [转]JAVA泛型通配符T,E,K,V区别,T以及Class<T>,Class<?>的区别
原文地址:https://www.jianshu.com/p/95f349258afb 1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被 ...
随机推荐
- 解决idea中按退格键(Backspace)回到上一行问题
开始学习java时,第一次用idea,该问题困扰一上午,网上也没有解决方案,最后自己摸索如下.打开File-> Settings->Editor->Smart Keys,将To pr ...
- js中宏任务,微任务,异步,同步,执行的顺序
[微任务]包括:Promise , process.nextTick() *node.js里面的 [宏任务]包括:整体代码script, setTimeout setInterval ...
- 量化交易——MACD是什么,用python来验证交易时把它作为买卖信号到底靠不靠谱
在我刚开始学习股票的时候,是跟着b站上的视频学习的,当讲到macd的时候,up主反复强调macd是指标之王,股票里面有那么多的指标,但是却只有macd被称为指标之王,当macd出现金叉的时候,预示着股 ...
- 微信小程序ECharts通过调用api接口实现图表的数据可视化
小程序ECharts使用接口调入数据 首先附上js文件链接:axios.js 提取码:AxIo 将此放到小程序目录下的utils文件夹下 在已经完成图表的js文件中完成以下修改: ①引用axios.j ...
- PVE设置定时关闭、启动虚拟机
shell中输入命令: crontab -e 进入对应cron 添加命令: 例如: 00 2 * * * pvesh create /nodes/pve/qemu/102/status/stop 00 ...
- vue上传图片组件
<template> <!-- 上传控件 用法: <upload-widget v-model="imgUrl"></upload-widg ...
- OSIDP-并发:死锁和饥饿-06
死锁原理 死锁:一组相互竞争系统资源或者进行通信的进程间"永久"阻塞的现象. 资源分为两类:可重用资源和可消耗资源. 可重用资源:一次只能被一个进程使用且不会被耗尽的资源.如处理器 ...
- PRVF-4007 : User equivalence check failed for user "grid"
PRVF-4007 : User equivalence check failed for user "grid" 问题:Oracle安装Grid Infrastructure之前 ...
- NOIP2010普及组
T2]接水问题 有一些小细节,比如如果最小值存在多个,比如最后还需要一个完全结束的最大值 #include<iostream> #include<cstring> #inclu ...
- html页面间传递参数
$.query.get("id") jquery.params.js代码 /** * jQuery.query - Query String Modification and Cr ...