java中的泛型
BasicGeneric.java
import java.util.*; /* java中的泛型 */ public class BasicGeneric { public static void main(String[] args) { //Interface List<E>,E为泛型 List<String> c = new ArrayList<String>(); c.add("aaa"); c.add("bbb"); c.add("ccc"); for(int i=0; i<c.size(); i++) { String s = c.get(i); System.out.println(s); } //Interface Collection<E>,E为泛型 Collection<String> c2 = new HashSet<String>(); c2.add("aaa"); c2.add("bbb"); c2.add("ccc"); //Interface Iterator<E>,E为泛型 for(Iterator<String> it = c2.iterator(); it.hasNext(); ) { String s = it.next(); System.out.println(s); } } } //Interface Comparable<T>,T为泛型 class MyName implements Comparable<MyName> { int age; public int compareTo(MyName mn) { if(this.age > mn.age) return 1; else if(this.age < mn.age) return -1; else return 0; } }
F:\java>javac BasicGeneric.java F:\java>java BasicGeneric aaa bbb ccc aaa ccc bbb F:\java>
可以看到使用泛型后,编译时没有出现警告
注: T.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
使用泛型和自动打包解包
TestMap2.java
import java.util.*; public class TestMap2 { public static void main(String args[]) { Map<String, Integer> m1 = new HashMap<String , Integer>(); m1.put("one", 1); m1.put("two", 2); m1.put("three", 3); System.out.println(m1.size());//3 System.out.println(m1.containsKey("one"));//true if(m1.containsKey("two")) { //int i = ((Integer)m1.get("two")).intValue(); //使用泛型后,不需要指定Integer进行强制转换 int i = m1.get("two"); System.out.println(i);//2 } } }
F:\java>javac TestMap2.java F:\java>java TestMap2 3 true 2 F:\java>
TestArgsWords2.java
import java.util.*; public class TestArgsWords2 { private static final int ONE = 1; public static void main(String args[]) { //使用泛型 Map<String, Integer> m = new HashMap<String, Integer>(); for (int i = 0; i < args.length; i++) { if(!m.containsKey(args[i])) { m.put(args[i], ONE); } else { int freq = m.get(args[i]); m.put(args[i], freq + 1); } } System.out.println (m.size() + " distinct words detected:"); System.out.println(m); } }
F:\java>javac TestArgsWords2.java F:\java>java TestArgsWords2 0 distinct words detected: {} F:\java>java TestArgsWords2 aa bb aa cc bb dd ss cc 5 distinct words detected: {aa=2, bb=2, cc=2, dd=1, ss=1} F:\java>
相关推荐
在泛型中,如果尝试向泛型容器添加不匹配的类型,编译器会报错。然而,通过反射或构造旧版本API的方式,仍然可能存在创建“野指针”(即不匹配类型的引用)的风险,这被称为类型擦除的副作用。 9. 有限的多态性 ...
### Java中泛型上下界问题基本问题的介绍 在Java编程语言中,泛型是一种非常重要的特性,它允许程序员编写类型安全的通用代码。通过使用泛型,可以在多个不同的类中重用相同的代码结构,同时确保类型安全性。然而,...
Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。
2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip...
Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战...
Java泛型是Java编程语言中的一个强大特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。这使得代码更加安全、可读性更强,并且能够减少类型转换的必要。在“java泛型的内部原理及更深应用”这个...
Java中的泛型是一种强大的工具,它允许程序员在编写代码时定义类型参数,从而提供更强的类型安全性、减少类型转换,并提高代码的可重用性。泛型是在Java SE 1.5版本中引入的,其本质是参数化类型,这意味着在类、...
Java 中泛型总结 Java 中泛型总结是指在 Java 语言中使用泛型(generics)来实现编译时类型安全检测机制,避免向下转型的隐患。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。在 Java 中,...
在编程世界中,C#和Java都是广泛应用的高级编程语言,它们都支持泛型这一强大的特性,以提高代码的类型安全性和重用性。本文将深入探讨C#和Java在泛型实现上的异同,帮助开发者更好地理解和利用这两种语言的泛型功能...
2. **通配符**:泛型中使用通配符可以增加类型参数的灵活性。例如,`?`表示任何类型,`? extends Number`则限制为Number或其子类。这在处理多种类型的集合时非常有用,如方法参数的定义。 3. **类型擦除**:由于...
感谢所有为Java泛型做出贡献的人们,包括设计者、实现者以及提供反馈和支持的社区成员。泛型是Java语言的一个重要特性,极大地提高了代码的质量和可维护性。 以上就是基于给定文件信息对Java 1.5泛型指南的主要知识...
Java 中泛型通配符的使用方法示例主要介绍了 Java 中泛型通配符的使用方法,结合实例形式分析了 Java 中泛型通配符的功能、语法及在泛型类创建泛型对象中的使用方法。以下是 Java 中泛型通配符的使用方法示例的知识...
综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...
这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...
Java反射和泛型是两种强大的编程特性,它们在开发中有着广泛的应用,特别是在数据库操作的动态化场景下。本文将详细介绍如何结合这两种技术实现在Java中对MySQL、SQL Server或Oracle数据库进行动态的增删改查操作。 ...
泛型是Java编程语言中的一个重要特性,它引入于JDK 5.0,极大地提高了代码的类型安全性和可读性。泛型允许我们在类、接口和方法中使用类型参数,这样我们可以在编译时检查类型,避免了运行时类型转换的麻烦和潜在的...