`
i拾贝
  • 浏览: 30028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java中的泛型

    博客分类:
  • java
阅读更多

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>

 

 

分享到:
评论

相关推荐

    Java中泛型的各种使用

    在泛型中,如果尝试向泛型容器添加不匹配的类型,编译器会报错。然而,通过反射或构造旧版本API的方式,仍然可能存在创建“野指针”(即不匹配类型的引用)的风险,这被称为类型擦除的副作用。 9. 有限的多态性 ...

    java中泛型上下界问题基本问题的介绍

    ### Java中泛型上下界问题基本问题的介绍 在Java编程语言中,泛型是一种非常重要的特性,它允许程序员编写类型安全的通用代码。通过使用泛型,可以在多个不同的类中重用相同的代码结构,同时确保类型安全性。然而,...

    Java 实现泛型List

    Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。

    2.java定义泛型类.zip

    2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip...

    Java中的泛型简析实战.zip

    Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战Java中的泛型简析实战...

    java泛型的内部原理及更深应用

    Java泛型是Java编程语言中的一个强大特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。这使得代码更加安全、可读性更强,并且能够减少类型转换的必要。在“java泛型的内部原理及更深应用”这个...

    java中泛型技术介绍及应用

    Java中的泛型是一种强大的工具,它允许程序员在编写代码时定义类型参数,从而提供更强的类型安全性、减少类型转换,并提高代码的可重用性。泛型是在Java SE 1.5版本中引入的,其本质是参数化类型,这意味着在类、...

    Java中泛型总结(推荐)

    Java 中泛型总结 Java 中泛型总结是指在 Java 语言中使用泛型(generics)来实现编译时类型安全检测机制,避免向下转型的隐患。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。在 Java 中,...

    关于C#、java泛型的看法

    在编程世界中,C#和Java都是广泛应用的高级编程语言,它们都支持泛型这一强大的特性,以提高代码的类型安全性和重用性。本文将深入探讨C#和Java在泛型实现上的异同,帮助开发者更好地理解和利用这两种语言的泛型功能...

    java5泛型新特性 pdf

    2. **通配符**:泛型中使用通配符可以增加类型参数的灵活性。例如,`?`表示任何类型,`? extends Number`则限制为Number或其子类。这在处理多种类型的集合时非常有用,如方法参数的定义。 3. **类型擦除**:由于...

    Java1.5泛型指南中文版

    感谢所有为Java泛型做出贡献的人们,包括设计者、实现者以及提供反馈和支持的社区成员。泛型是Java语言的一个重要特性,极大地提高了代码的质量和可维护性。 以上就是基于给定文件信息对Java 1.5泛型指南的主要知识...

    Java中泛型通配符的使用方法示例

    Java 中泛型通配符的使用方法示例主要介绍了 Java 中泛型通配符的使用方法,结合实例形式分析了 Java 中泛型通配符的功能、语法及在泛型类创建泛型对象中的使用方法。以下是 Java 中泛型通配符的使用方法示例的知识...

    java 泛型类的类型识别示例

    综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...

    JAVA泛型加减乘除

    这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...

    Java反射泛型,实现数据库的动态增删改查等功能

    Java反射和泛型是两种强大的编程特性,它们在开发中有着广泛的应用,特别是在数据库操作的动态化场景下。本文将详细介绍如何结合这两种技术实现在Java中对MySQL、SQL Server或Oracle数据库进行动态的增删改查操作。 ...

    java 一个关于泛型的简单例子

    泛型是Java编程语言中的一个重要特性,它引入于JDK 5.0,极大地提高了代码的类型安全性和可读性。泛型允许我们在类、接口和方法中使用类型参数,这样我们可以在编译时检查类型,避免了运行时类型转换的麻烦和潜在的...

Global site tag (gtag.js) - Google Analytics