- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详细分析Java 泛型的使用由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1、泛型的简介 。
1、为什么要使用泛型?
一般使用在集合上,比如现在把一个字符串类型的值放入到集合里面,这个时候,这个值放到集合之后,失去本身的类型,只能是object类型。这时,如果想要对这个值进行类型转换,很容易出现类型转换错误,怎么解决这个问题,可以使用泛型来解决.
2、在泛型里面写是一个对象,String 不能写基本的数据类型 比如int,要写基本的数据类型对应的包装类 。
。
基本数据类型 | 对应包装类 | 基本数据类型 | 对应包装类 |
byte | Byte | short | Short |
int | Integer | long | Long |
float | Float | double | Double |
char | Character | boolean | Boolean |
。
2、在集合上如何使用泛型 。
-常用集合 list set map -泛型语法:集合<String> 比如list<String> 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
//泛型在list上的使用
@Test
public
void
testList() {
List<String> list =
new
ArrayList<String>();
list.add(
"aaa"
);
list.add(
"bbb"
);
list.add(
"ccc"
);
//for循环
for
(
int
i =
1
;i<list.size();i++) {
String s = list.get(i);
System.out.println(s);
}
System.out.println(
"================="
);
//增强for循环
for
(String string : list) {
System.out.println(string);
}
//迭代器
Iterator<String> it = list.iterator();
while
(it.hasNext()){
System.out.println(it.next());
}
}
//泛型在set上的使用
@Test
public
void
testSet() {
Set<String> set =
new
HashSet<String>();
set.add(
"www"
);
set.add(
"qqq"
);
set.add(
"zzz"
);
//使用增强for循环
for
(String s2 : set) {
System.out.println(s2);
}
System.out.println(
"============="
);
//使用迭代器
Iterator<String> iterator = set.iterator();
while
(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
//在map上使用泛型
@Test
public
void
testMap() {
Map<String,String> map =
new
HashMap<String, String>();
map.put(
"aaa"
,
"111"
);
map.put(
"bbb"
,
"222"
);
map.put(
"ccc"
,
"333"
);
//遍历map,有两种
//1、获取所有的key,通过key得到value,使用get方法
//2、获取key和value的关系
//使用第一种方式遍历
//获取所有的key
Set<String> sets = map.keySet();
//遍历所有的key
for
(String key : sets) {
String value = map.get(key);
System.out.println(key+
":"
+value);
}
System.out.println(
"========"
);
//使用第二种方式遍历
//得到key和value的关系
Set<Map.Entry<String,String>> sets1 = map.entrySet();
//遍历sets1
for
(Map.Entry<String,String> entry :sets1) {
String keyv = entry.getKey();
String valuev = entry.getValue();
System.out.println(keyv+
":"
+valuev);
}
}
|
3、在方法上使用泛型 。
定义一个数组,实现指定位置上数组元素的交换 。
方法逻辑相同,只是数据类型不同,这个时候使用泛型方法 。
1
2
3
4
5
6
7
8
9
10
11
|
/*
* 使用泛型方法需要定义一个类型使用大小字母表示T:T表示任意的类型
* 写在返回值之前void之前
* =========表示定义了一个类型,这个类型是T
* 在下面就可以使用类型
* */
public
static
<T>
void
swap(T[] arr,
int
a,
int
b) {
T temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
|
4、泛型在类上的使用 。
1
2
3
4
5
6
7
8
|
public
class
TestDemo04<T> {
//在类里面可以直接使用T的类型
T aa;
public
void
test1(T bb) {}
//写一静态方法,在类上面定义的泛型,不能在静态方法里面使用,需重新定义泛型
public
static
<A>
void
test2(A cc) {}
}
|
以上就是详细分析Java 泛型的使用的详细内容,更多关于Java 泛型的使用的资料请关注我其它相关文章! 。
原文链接:https://www.cnblogs.com/gdwkong/p/7422894.html 。
最后此篇关于详细分析Java 泛型的使用的文章就讲到这里了,如果你想了解更多关于详细分析Java 泛型的使用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
目录 进程 其他相关概念 创建线程的两种方式 为什么使用start()方法而不直接使用run()方法 start()方法底层
CURL状态码列表 状态码 状态原因 解释 0 正常访问
ODBC连接类函数 odbc_connect函数:打开一个ODBC连接 odbc_close函数:关闭一个已经打开的ODBC连接 odbc_close_all函数:关闭所有已经打开的ODBC连
作为标题,如何计算从纪元1900到现在使用boost的持续时间? 编辑:很抱歉以前的问题太短。我将再次描述我的问题。 我有关于将生日另存为整数的问题。我创建了四个函数,用法如下: ptime转换为整数
前言 在Java中,有一个常被忽略 但 非常重要的关键字Synchronized今天,我将详细讲解 Java关键字Synchronized的所有知识,希望你们会喜欢 目录 1. 定义 J
详细 JVM 垃圾收集日志的时间戳是收集的开始还是结束? 2016-08-09T21:04:19.756-0400: 224890.317: [GC Desired survivor size 167
我在“Master-Detail”概念上苦苦挣扎,除了一点点(但很重要)的细微差别外,几乎所有东西都按预期工作。我应该在 Storyboard上更改什么以在详细信息 View (屏幕截图底部的右上角)
我希望能够显示表格的详细 View ,但不推送新屏幕,而只显示表格所在的详细 View 。 设置它的最佳方式是什么......如果真的可行的话? ---------------------------
我在我的博客中为我的帖子使用了详细 View ,每篇帖子都有评论,所以我想对它们进行分页,但我不知道该怎么做,因为我请求了帖子模型。我知道如何在功能 View 中执行此操作,但不知道如何在详细 Vie
在下面的代码中,与 pm 对齐,该行是否会 move 整个内存并将其分配给 pm,或者它只会 move p 指向的内存而不是整个数组? int main() { int*
1·下载 https://dev.mysql.com/downloads/mysql/ 2·安装服务 1)管理员运行cmd 2)D: 3)cd D:\mysql
今天以前一直用的SQL Server 2005做开发,偶尔也用MySQL,现入手公司项目,用到SQL Server 2008,于是乎必须安装它,免得出现其他很纠结的小问题,现将自己安装图解分享如下:
1. crontab命令选项 复制代码 代码如下: #crontab -u <-l, -r, -e> -u指定一个用
我们有一个 WPF 应用程序,它有一个主窗口/详细信息窗口,两者都是 WPF 数据网格。当您在上部数据网格中选择一行时,详细信息将显示在下部数据网格中。我想知道从 UI 的角度来看是否有任何关于如何处
在可视化 Perforce 客户端 (p4v) 中有一个选项: 显示文件操作的 p4 命令输出 启用后,在日志 Pane 中,我可以看到这样的详细日志记录: p4 sync /Users/az/ftp
在其他服务器上设置测试环境后,在几个API调用中出现错误。 99%肯定这是MySQL的事情,但是返回的错误根本没有帮助: global name 'sys' is not defined" 我已经导入
我正在维护一个通用的 iOS 应用程序,其开发已开始于 iOS 6。我正在为 iOS 7 更新 UI。现在我遇到了应用程序的 iPad 部分的奇怪问题。这部分遵循使用 UISplitViewContr
我希望我能正确描述这种情况。当它发生时很容易在屏幕上看到,但很难用语言解释,但我会尽力而为。 我有一个带有固定主视图 (UITableView) 和两个详细 View 之一的 UISplitViewC
我尝试在 eclipse 和 intelliJ 参数中使用垃圾收集记录器来配置简单的测试程序。尝试了不同类型的配置,但尚未创建日志文件。 -XX:+PrintGCDetails -XX:+PrintG
正如您所知,.cap 文件中的 java 小程序的输出文件格式必须通过智能卡读卡器/写卡器(如 ACR122 或任何其他读卡器)部署到 java 卡,而且我相信 java 卡与 java 卡之间的部署
我是一名优秀的程序员,十分优秀!