`
raymond.chen
  • 浏览: 1437140 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

获得泛型类的方法

    博客分类:
  • Java
 
阅读更多

1、泛型类

public class Function {
	private Long id = new Long(0);
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
}

 

2、定义基类,包含泛型类型

public abstract class Father<T> {
	private Class<T> entityClass;
	private T model;
	
	public abstract void say();

	/**
	 * 获取父类的泛型类
	 */
	public Class<T> getEntityClass() {
		Class clazz = getClass(); //得到当前类
		Type genericType = clazz.getGenericSuperclass(); //返回当前类的父类的Type,包含泛型参数信息
		
		if(genericType instanceof ParameterizedType){
			Type[] params = ((ParameterizedType)genericType).getActualTypeArguments(); //得到父类的泛型参数信息
			if(params!=null && params.length>0){
				entityClass = (Class)params[0];
			}
		}
		
		return entityClass;
	}

	public T getModel() {
		Class<T> clazz = getEntityClass();
		if(clazz!=null){
			try{
				model = clazz.newInstance(); //泛型类的实例
			}catch (InstantiationException e){
				e.printStackTrace();
			}catch (IllegalAccessException e){
				e.printStackTrace();
			}
		}
		return model;
	}
}

 

3、继承基类,传入具体的泛型类

public class Son extends Father<Function> {
	@Override
	public void say() {
		String name = null;
		if(getEntityClass()!=null) name = getEntityClass().getName();
		System.out.println(name);
		
		Function func = (Function)getModel();
		if(func!=null){
			System.out.println(func.getId());
		}
	}
	
	public static void main(String[] args) {
		Son fa = new Son();
		fa.say();
	}
}

  

分享到:
评论
1 楼 eueuy 2011-01-15  
正式我急需的,谢谢分享

相关推荐

    java 泛型类的类型识别示例

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

    TypeScript泛型类 - 把类作为参数类型的泛型类.zip

    在这个“TypeScript泛型类 - 把类作为参数类型的泛型类”示例中,我们将深入探讨如何利用泛型在TypeScript中创建灵活的、可复用的类模板。 泛型是TypeScript中的一个核心概念,它允许我们在编写代码时定义和重用...

    java泛型类和函数

    #### 泛型类与泛型方法 1. **泛型类**: - 泛型类是在定义类时声明一个或多个类型参数。例如,定义一个简单的泛型类`Box&lt;T&gt;`,其中`T`是类型参数。 ```java public class Box&lt;T&gt; { private T item; public ...

    泛型和泛型集合类用法

    上述代码定义了一个名为`ItemList&lt;T&gt;`的泛型类,它可以存储任何类型的对象,并提供了添加和获取对象的方法。这种自定义泛型类可以根据具体的业务需求灵活扩展功能。 通过以上分析,我们可以看出泛型和泛型集合类在...

    Jdk15泛型的实现

    JDK1.5引入的泛型技术极大地增强了Java语言的灵活性和安全性,通过参数化类型、泛型类和泛型算法,开发者可以编写更加通用且类型安全的代码。理解和熟练掌握泛型的使用,对于提高Java开发者的编程技能和软件质量有着...

    泛型dao 泛型dao 泛型dao

    dao接口 : PersonDAO extends GenericDao, Integer&gt; 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl, ID extends ...

    java泛型编程

    Java泛型也支持继承关系,允许我们声明泛型类或方法时限定类型参数必须继承自某个特定类型或实现某个接口。 ```java public class MyList&lt;T extends Comparable&lt;T&gt;&gt; { // ... } ``` 这种做法使得`MyList`类只能...

    高级无敌,c#泛型例子

    在实例化泛型类或调用泛型方法时,我们可以指定具体的类型,从而得到一个特定类型的实例。例如,C#中的`List&lt;T&gt;`就是一个常见的泛型集合类,它可以容纳任何类型的数据。 泛型的优势在于: 1. **类型安全**:使用...

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

    * 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用泛型。 五、结论 泛型是Java编程语言中的一种重要特性,它可以提高代码的灵活性和可读性。通过使用泛型,我们可以编写更加灵活和可维护的代码。此外...

    泛型MakeGeneric方法应用实例.rar

    这里,`MyGenericClass&lt;&gt;`是我们的泛型类,`string`是我们的类型参数。`CreateInstance`会返回`MyGenericClass&lt;string&gt;`类型的实例。 在提供的压缩包文件`MakeGenericTypeTest`中,可能包含了一个小型的演示项目,...

    C#泛型学习和理解代码示例

    除了泛型类,还可以在非泛型类中定义泛型方法。例如,`SwapValues(ref T a, ref T b)`可以交换两个变量的值,无论它们是什么类型。 6. **泛型接口**: 泛型接口允许我们定义一组操作,而不指定具体类型。例如,`...

    泛型实现小例

    总之,“泛型实现小例”主要涉及Java编程中的泛型使用,包括在类、接口和方法中定义类型参数,以及如何通过泛型提高代码的安全性和可读性。通过理解和熟练运用泛型,我们可以编写出更加高效且易于维护的Java代码。

    C#之泛型详解.docx

    在实例化泛型类时,可以使用尖括号`&lt;&gt;`来指定类型参数。例如,`Stack&lt;int&gt;`表示一个只接受整型数据的栈,`Stack&lt;string&gt;`则表示一个只接受字符串的栈。在使用泛型方法时,类型参数可以是方法签名的一部分,例如`void...

    Java1_5泛型.zip

    Java 1.5 泛型是Java编程语言中的一项重要特性,它于2004...通过深入理解泛型的各个方面,包括类型参数、泛型类和方法、边界限制、通配符、类型擦除以及泛型与多态的结合,开发者可以编写出更加高效且易于理解的代码。

    C#泛型研究

    它是定义泛型类、结构、接口或方法时所使用的未知类型,用于表示泛型的通用性。 #### 构造泛型类型(构造类型) 构造泛型类型是指通过为泛型类型参数指定具体类型而得到的实际类型。例如,如果你有一个泛型类`List...

    java 泛型接口示例

    因此,虽然在编译期间我们能获得类型检查的好处,但在运行时,泛型接口和类的行为与无参数类型版本基本相同。 5. **通配符** 在某些情况下,我们可能不关心类型参数的具体类型,而只关心它是某个类的子类或者实现...

    Java泛型学习笔记.pdf

    例如,如果泛型类中的方法接受或返回泛型类型,那么应该考虑使用类型参数来定义这些方法,以保持类型安全性。 7. 通配符的使用场景: 通配符在读取时使用非常方便,因为读者不需要关心具体的类型。但在写入时就有...

    JAVAfanxing.rar_泛型

    泛型方法与泛型类类似,只是类型参数定义在方法级别。这使得我们可以在单个类中创建多种方法,每种方法处理不同类型的参数。下面是一个示例: ```java public static &lt;T&gt; void printList(List&lt;T&gt; list) { for (T ...

    Java重要的泛型使用方法.docx

    ### Java泛型的重要使用方法 #### 一、引言与背景 在软件开发过程中,我们经常需要编写可重用的代码来处理不同类型的对象。例如,假设我们需要创建一个`MyArrayList`类,它可以用来存储一系列的数据,并提供添加和...

Global site tag (gtag.js) - Google Analytics