`

泛型参数

    博客分类:
  • java
阅读更多
public class Animal {
	private String id;
	private String name;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 

public class Cat extends Animal implements Comparable<Cat>{
	public int compareTo(Cat arg0) {
		return this.getId().compareTo(arg0.getId());
	}

}

 

public class Dog extends Animal implements Comparable<Dog> {
	public int compareTo(Dog arg0) {
		return this.getId().compareTo(arg0.getId());
	}
}

 

public  class demo<E> 
{
	List rsList=new ArrayList();
	public E getById(E o)
	{
		System.out.println(o);
		return o ;
	}
}

 

public class Demo1 {
	public <E extends Animal>void getByid(List<E> e)
	{     		
	}
	public void getByidL(List<Animal> list)
	{	
	}
}

 

public class DemoTest {
	public static void main(String[] args) {
		
		System.out.println("***********");
		demo<String> demo=new demo<String>();
		demo.getById("ddddd");
	}
	public void test()
	{
		List<Dog> list=new ArrayList<Dog>();
		List<Animal>list1=new ArrayList<Animal>();
		Demo1 demo=new Demo1();
		demo.getByidL(list1);//只能是Animal
		demo.getByid(list);//可以使Animal或它的继承类或实现类 
		demo.getByid(list1);
//		demo.getByidL(list);//this is wrong because List<Dog> is not List<Animal>
		
	}
	/**
	 * 创建内部类来依据name来排序
	 * @author wei
	 *
	 */
	class NameCompare implements Comparator<Cat>
	{
		public int compare(Cat arg0, Cat arg1) {
			return arg0.getName().compareTo(arg1.getName());
		}
	}
	/**
	 * 创建的内部类来依据id来排序
	 * @author wei
	 *
	 */
	class IdCompare implements Comparator<Cat>
	{
		public int compare(Cat arg0, Cat arg1) {
			return arg0.getId().compareTo(arg1.getId());
		}
	}
public void test1()
{
	List<Cat>rslist=new ArrayList<Cat>();
	NameCompare nameCompare=new NameCompare();
    Collections.sort(rslist, nameCompare);//调用了
}
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    C#泛型参数多线程与复杂参数多线程2

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...

    C#泛型参数多线程与复杂参数多线程

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...

    69 026_2默认泛型参数与运算符重载.mp4

    69 026_2默认泛型参数与运算符重载.mp4

    whlmpower#JavaNote#获取泛型参数的实际类型及反序列化1

    获取泛型参数的实际类型}//获取此类的父类的第一个泛型参数的实际类型对应于实际的类型PayResultHandler,其父类HPWallletCallBackH

    C# 泛型参数转换

    C# 泛型参数转换是C#编程语言中一个重要的特性,它允许程序员在定义类、接口或方法时使用一种通用的数据类型,从而提高代码的重用性和灵活性。泛型参数转换涉及到`in`和`out`两种泛型变体,它们在泛型委托和接口中...

    java 用泛型参数类型构造数组详解及实例

    本文将深入探讨如何在Java中使用泛型参数类型构造数组,并通过实例解析这个问题。 首先,我们需要理解Java泛型的基本概念。泛型是在类、接口和方法声明中引入的一种语法特性,用来指定类型参数,例如`&lt;T&gt;`。这里的`...

    looly#hutool-site#泛型类型工具-TypeUtil1

    介绍获取方法的参数和返回值类型(包括Type和Class)获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型)方法首先我们定义一个类:public cla

    泛型的原理,通俗解释

    泛型约束是指在泛型参数上添加约束,以确保泛型参数只能用于特定的类型。例如,以下是一个使用泛型约束的示例代码: ```csharp public class LinkedList ,T&gt; where K:IComparable { ... } ``` 在上面的代码中,...

    java 泛型类的类型识别示例

    3. **泛型方法和类型参数**:在泛型方法中,我们可以用类型参数来表示操作的类型,然后在方法内部使用`Class`对象来获取更多信息。例如: ```java public &lt;U&gt; void process(U value) { Class&lt;U&gt; valueType = ...

    C__泛型的运用

    - 在类、接口或方法的声明中,使用尖括号 `&lt; &gt;` 来定义泛型参数。 - 泛型参数通常使用大写字母(如 `T`、`E` 等)表示。 - 使用泛型参数的地方可以用实际的数据类型替代。 例如,在上述内容中提到的 `List&lt;T&gt;` 类型...

    基于泛型的,高性能的,可指定构造函数及传入参数初始化的,线程安全的,扩展性非常高的传说中的对象池

    基于泛型的,高性能的,可指定构造函数及传入参数初始化的,线程安全的,扩展性非常高的传说中的对象池 详细看: http://blog.csdn.net/luyikk/archive/2010/05/10/5576550.aspx

    Java泛型枚举与For语句的简化写法PPT教案学习.pptx

    泛型类是一种可以使用泛型参数的类,而泛型接口是一种可以使用泛型参数的接口。 泛型类的定义格式如下: ```java public class 类名 &lt;类型参数列表&gt; [extends 父类名] [implements 接口名称列表] { // 类体 } ```...

    生成代码从T到T1、T2、Tn自动生成多个类型的泛型实例代码

    这个类的核心在于其泛型参数T,它可以是任何类型,如int、string或其他自定义类型。 ```csharp public class Demo { public Demo(Action&lt;T&gt; demo) { _demo = demo ?? throw new ArgumentNullException(nameof...

    泛型工具类

    具体到给定的`GenericUtil`类,其核心功能在于提取出泛型参数的具体类型,这对于动态类型处理、反射操作以及类型检查等场景非常有用。 #### 描述详解:“泛型工具类,用于dao的超类,获取实体类的类型。” 在描述...

    momomo.com.platform.Lambda:直观的基于泛型的功能接口| Lambda | 支持{void |的封闭框架返回| 多参数}&异常

    Lambda.R2E用于返回的lambda,该lambda具有已定义的返回类型并带有两个泛型参数,并且还允许您定义抛出的Exception类型! ... 还有很多 ... 同样,从Lambda.R2E lambda到Lambda.V2E就像调用lambda.V2E()一样容易...

    VC++ 2005:泛型编程

    此外,CLI泛型还支持类型约束,允许对泛型参数施加限制,如要求类型必须是某种接口的实现或者具有特定构造函数。这样可以确保泛型类的行为在各种类型之间保持一致。 CLI泛型与C++模板有显著的区别。C++模板是在编译...

    反射处理java泛型_.docx

    在处理泛型时,由于Java的类型擦除,直接使用常规方式无法获取到泛型参数的具体类型。这时,就需要借助反射来获取泛型信息。 `ReflectionUtil`是一个工具类,它扩展了Java标准库中的`java.lang.reflect`,提供了...

    个人学习C#泛型总结ppt

    遵循约定,泛型参数通常使用单个字母表示,如T、U、V等,但也可以使用有意义的名称,如Key、Value等,以更好地表达泛型的作用。 **泛型与类型安全示例** 考虑ArrayList和List的对比。ArrayList可以存储任何类型的...

Global site tag (gtag.js) - Google Analytics