Java泛型
来源:互联网 发布:网络教育统考报名时间 编辑:程序博客网 时间:2024/06/03 05:56
泛型使得可以编写参数化的类型,并且可以通过传递一个或多个引用类型来创建它的实例,对象将仅限于这些类型。例如,java.util.List接口就是泛型,如果通过传递java.lang.String创建List,那么将会得到一个只存储String的List。除了参数化的类型外,泛型还支持参数化的方法。
就像方法一样,泛型类型也可以接受参数,这也是泛型类型经常被称为参数化类型的原因。不像在方法中那样,把基本类型或者对象引用放在圆括号里进行传递,而是将引用类型放到尖括号里传递给泛型类型。
import java.util.List;import java.util.ArrayList;public class GenericListTest { public static void main(String[] args) { // TODO Auto-generated method stub //without generics //无参泛型类型称为原始类型 List stringList1=new ArrayList(); stringList1.add("Java"); stringList1.add("without generics"); //cast to java.lang.String String s1=(String) stringList1.get(0); System.out.println(s1.toUpperCase()); //with generics and diamond //从Java5开始,如果没有使用带有参数的泛型类型,编译器将会发出警告,他认为你可能忘记用泛型类型定义类型常量了 List<String> stringList2=new ArrayList<>(); //Java7 //List<String> stringList2=new ArrayList<String>(); stringList2.add("Java"); stringList2.add("with generics"); //no type casting is necessary String s2=stringList2.get(0); System.out.println(s2.toUpperCase()); }}
StringList2是一个泛型List,声明List告诉编译器:List的这个实例只能存储String,检索List的成员元素时,不需要进行类型转换,因为他的get方法会返回预期的类型,即String。
泛型类型在编译时进行类型检查。
泛型类型也是一个类型,并且可以用作类型变量。
import java.util.ArrayList;import java.util.List;public class ListOfListsTest { public static void main(String[] args) { // TODO Auto-generated method stub List<String> listOfStrings=new ArrayList<>(); listOfStrings.add("Hello again"); List<List<String>> listOfLists=new ArrayList<>(); listOfLists.add(listOfStrings); String s=listOfLists.get(0).get(0); System.out.println(s); //Hello again }}
泛型可以接受不止一个类型变量。java.lang.Map接口有两个类型变量,第一个定义了他的键类型,第二个定义了他的值类型。使用泛型Map的例子。
import java.util.HashMap;import java.util.Map;public class MapTest { public static void main(String[] args) { // TODO Auto-generated method stub Map<String, String> map=new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); String value1=map.get("key1"); }}
0 0
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- 《HeadFirst设计模式》读书笔记-第3章-装饰者模式
- 贝叶斯公式在生活中的应用
- hadoop的hdfs常用文件操作命令
- switch case正确的使用姿势——在代码之外的思考
- wordpress修改固定链接
- Java泛型
- java静态绑定和动态绑定
- 结构型模式-代理(proxy)
- 第二十八、Java面向对象之抽象类
- 转发:总结一些JavaScript开发的著名开源项目
- RocketMQ(五)性能测试报告
- 设置聊天游戏服务器的思路
- Spring中JdbcTemplate的使用
- Material Design