`
郑云飞
  • 浏览: 823308 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java泛型

阅读更多
package lesson;
//ArrayList与vector的区别:
//1:vector 是线程同步的(这个类中的一些方法保证了Vector中的对象是线程安全的),ArrayList是线程非同步的(因此ArrayList中的对象并不是线程安全的)
//2:如果填充数据查过出示容量或默认容量(假设为originalSize)时,vector按照originalsize/2自动扩充,而ArrayList则按照originalSize增长
//数据增长:
//从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象。
//当你向这二中类型中增加元素的手,如果元素的数码超过了内部数组目前的长度,他们都要扩展内部数组的长度
//Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后获得的这个集合所占的空间总是比你实际需要的要大,所以如果你要在集合中保存
//大量数据那么使用Vecto有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Vector;

public class VectorTest
{

	public static <E> void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException 
	{
		Vector<Object> v=new Vector<Object>();
		Manager emp=new Manager(123,"郑云飞",22);
		v.add(emp);
		for(int i=0;i<v.size();i++)
		{
			System.out.println(((Manager)v.get(i)).test(1, "云飞", 22));
			System.out.println(v.elementAt(i));
		}
       Gen<Bird> b=new Gen<Bird>(new Bird("小鹦鹉",6));
       b.showTypeName();
      
	}

	
}
//定义一个Bird类
class Bird
{
	private String name;
	private int age ;
	
	
	public Bird(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public static Object[] count(int a,int b)
	{
		System.out.println("鹦鹉算算术的结果是:"+a+b);
		return null;
	}
}

//定义一个泛型
class Gen<T>
{
	T o;
	public Gen(T o)
	{
		this.o=o;
	}
	public void showTypeName() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
	{
		System.out.println("类型是:"+o.getClass());
		//通过反射机制,我们可以得到T这个类的很多信息
		Method []m=o.getClass().getDeclaredMethods();
		//打印
		
		for(int i=0;i<m.length;i++)
		{
			if(m[i].getName().equals("count"))
			{
				m[i].invoke(Bird.count(6, 8));
			}
		}
	}
}



















































 

package lesson;
class Manager
{
	private int id;
	private String name;
	private int age;
	public Manager(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public Manager(int id, String name)
	{
		super();
		this.id = id;
		this.name = name;
	}
	public static int test(int id,String name,int age)
	{
	   System.out.println("编号:"+id+"姓名:"+name+"年龄:"+age);
	   return age;
	}
	
}

 

package fxing;

import java.util.*;

public class Gen4Test
{
	public static void main(String[] args)
	{
		Gen4<ArrayList<String>,String> g4=new Gen4<ArrayList<String>,String>();
		g4.id=new ArrayList<String>();
	    g4.id.add("123");
		System.out.println(g4.id);
		//?泛型通配符,表示任意的数据类型
		//使用的时候可以使用extends限定泛型为固定类型一下的对象类型
		//Gen4<Collection> g44=null;//err
		//g44=new Gen4<HashSet>();//err
		Gen4<? extends Collection,String> g44=null;
		g44=new Gen4<HashSet,String>();
		//super限定泛型为固定类型以上的对象类型
		//super只能在使用的使用限定,不能在声明的时候限定
		Gen4<? extends Collection,? super List> gg4=null;
		gg4=new Gen4<LinkedList,Collection>();
		gg4.<Object>getM("123");
		System.out.println(gg4.<String>getT("456"));
	}
}

 

package fxing;

import java.util.*;

public class Gen4<o extends Collection,E>//声明泛型的时候可以用extends限定泛型为固定类型一下的对象类型
{
   o id;
   E e;
   public o getId()
   {
	   return id;
   }
   //方法的泛型
   public <M> void getM(String m)
   {
	   
   }
   public <T> T getT(T t)
   {
	   return t;
   }
}

 

分享到:
评论

相关推荐

    Java泛型编程指南.pdf

    ### Java泛型编程指南知识点详解 #### 一、绪论:理解Java泛型的重要性与背景 **1.1 泛型的基本概念** 泛型是一种在编程语言中支持编写类型安全的通用函数或类的能力。在Java中引入泛型的主要目的是为了提供更...

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    Java泛型三篇文章,让你彻底理解泛型(super ,extend等区别)

    Java 泛型详解 Java 泛型是 Java SE 5.0 中引入的一项特征,它允许程序员在编译时检查类型安全,从而减少了 runtime 错误的可能性。泛型的主要优点是可以Reusable Code,让程序员编写更加灵活和可维护的代码。 ...

    Java泛型应用实例

    Java泛型是Java编程语言中的一个强大特性,它允许我们在定义类、接口和方法时指定类型参数,从而实现代码的重用和类型安全。在Java泛型应用实例中,我们可以看到泛型如何帮助我们提高代码的灵活性和效率,减少运行时...

    很好的Java泛型的总结

    Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...

    java 泛型类的类型识别示例

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

    java泛型技术之发展

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着Java SE 5.0的发布而引入,极大地增强了代码的类型安全性和重用性。本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展...

    SUN公司Java泛型编程文档

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。这个特性极大地提高了代码的类型安全性和可读性,减少了在运行时出现ClassCastException的可能性。SUN公司的Java泛型编程文档,包括...

    java 泛型接口示例

    下面我们将详细探讨Java泛型接口的相关知识点。 1. **泛型接口的定义** 泛型接口的定义方式与普通接口类似,只是在接口名之后添加了尖括号`&lt;T&gt;`,其中`T`是一个类型参数,代表某种未知的数据类型。例如: ```java...

    java 泛型方法使用示例

    下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...

    Java 泛型擦除后的三种补救方法

    Java 泛型是一种强大的工具,它允许我们在编程时指定变量的类型,提供了编译时的类型安全。然而,Java 的泛型在运行时是被擦除的,这意味着在运行时刻,所有的泛型类型信息都会丢失,无法直接用来创建对象或进行类型...

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

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

    JAVA泛型加减乘除

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

    java泛型总结

    ### Java泛型总结 #### 一、Java泛型概述 Java泛型是在JDK5之后引入的一个特性,它提供了一种类型安全的机制,用于指定集合或其他数据结构中的元素类型。通过使用泛型,程序员可以在编译阶段检测类型错误,避免了...

    java泛型学习ppt

    "Java 泛型学习" Java 泛型是 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的...

    Java泛型使用详细分析.pdf

    Java 泛型使用详细分析 Java 泛型是 Java 语言中的一种类型系统特性,允许开发者在编译期检查类型安全,以避免在运行时出现类型相关的错误。在本文中,我们将详细介绍 Java 泛型的使用方法和实现原理。 一、泛型的...

    Java泛型技术之发展.pdf

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着Java SE 5.0的发布而引入,极大地增强了代码的类型安全性和重用性。本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展...

    Java泛型类型擦除后的补偿

    本文将深入探讨Java泛型类型擦除的概念,并介绍在类型擦除后,为了保持泛型的安全性和便利性,Java设计者所采取的一些补偿机制。 1. **类型擦除**: - 在编译期间,所有的泛型类型信息都会被替换为它们的实际类型...

Global site tag (gtag.js) - Google Analytics