`

E枚举和泛型

 
阅读更多

之前一直没写过Enum。。今天看到系统后台代码,很多的泛型和枚举。。都有些看不懂。

下面写了个小例子,比如Animal对象,枚举一个dog后就得到一个dog对象。

public class Animal {

	private String name;
	private int age;

	public Animal(String name){
		this.name = name;
		this.age = 111;
		
	}
	//略了getter和setter
}

 

枚举类:

public enum AnimalEnum{
	
	DOG(new Animal("DOG")),//DOG就是一个AnimalEnum对象
	CAT(new Animal("CAT"));
	
	private final Animal animal;

	private AnimalEnum(Animal animal){
		this.animal = animal;
	}
	public Animal getAnimal(){//得到DOG的私有变量animal
		return animal;
	}
}

 测试:

public class TestMain {
	public static void main(String[] args){
		System.out.println(AnimalEnum.DOG.getAnimal().getAge());
	}
}

 抄一点。。:http://www.cnblogs.com/hemingwang0902/archive/2011/12/29/2306263.html#title-7

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。

 

接下来是泛型,我觉得泛型就是把类也作为参数传到了类中,下面是一个泛型的小例子。

public class GenericClass<C,PK extends Serializable> {
	private C entity;
	private PK primaryKey;
	
	public GenericClass(C c,PK id){
		entity = c;
		primaryKey = id;
	}
	public void print(){
		System.out.println("id = "+primaryKey+";  entity="+entity);
		
	}
}
 

 

  一个entity1类

public class Entity1 {
	public String toString() {
		return "entity";
	}
	
}

 运行测试:

public class TestMain {

	public static void main(String[] args) {
		GenericClass gc = new GenericClass<Entity1, Integer>(new Entity1(), 1);
		gc.print();
	}

}
 

打印结果:

id = 1;  entity=entity

分享到:
评论

相关推荐

    Java集合、泛型和枚举

    集合、泛型和枚举都是Java开发中常见的概念,它们在处理数据和编写代码时起到关键作用。 首先,Java集合是用于存储一组对象的容器。在Java中,集合分为两大类:`Collection`和`Map`。`Collection`接口是所有单一值...

    java5泛型新特性 pdf

    9. **泛型和枚举**:泛型也可应用于枚举类型,为每个枚举常量提供一种类型。 10. **桥接方法**:由于类型擦除,编译器可能会生成桥接方法来保持泛型方法的多态性。这些方法在字节码中可见,但在源代码中不可见。 ...

    Java枚举类型Enum的用法

    在枚举内部,可以通过`Enum&lt;E extends Enum&lt;E&gt;&gt;`的泛型方法`getDeclaringClass()`获取枚举常量所属的枚举类,以及`name()`和`ordinal()`方法获取常量的名称和在枚举中的位置。 总结来说,Java枚举类型提供了一种...

    JAVAfanxing.rar_泛型

    此外,它也用于接口(如`Comparable&lt;T&gt;`)、枚举(`EnumSet&lt;E&gt;`)、方法返回类型以及匿名类等场景。 总的来说,Java泛型提供了一种强大的工具,使我们能够在编写代码时进行更严格的类型检查,减少运行时错误,提高...

    简单的泛型模拟实现

    此外,泛型还可以与其他Java特性结合使用,比如接口、抽象类、枚举等,以提供更加复杂和灵活的设计模式。 泛型还有几个关键特性值得了解: 1. **类型擦除**:Java的泛型在编译后会被擦除,生成的字节码并不包含泛型...

    c#结课作业.doc

    C#编程语言基础知识点 本资源摘要信息涵盖了C#编程语言的基础知识点,包括泛型队列的...本资源摘要信息涵盖了C#编程语言的基础知识点,包括泛型队列的设计、迭代器方法的应用、枚举器类的设计和List类的泛型等效类。

    程序设计训练之 Rust 编程语言 第四讲:泛型、特型与生命周期

    例如,`Result, E&gt;` 枚举类型就是 Rust 标准库中使用泛型的一个典型例子。它被广泛用于表示可能出错的操作的结果,其中 `T` 表示成功的值类型,而 `E` 表示错误的值类型。这样的设计使得 `Result` 可以被用于各种...

    实验六 异常处理、泛型程序设计

    要求: 在原有学生管理系统中,针对读文件、类型转换、数组等操作引入异常处理机制; 编写一个表示某门课程成绩的泛型类 class ...要求:成绩可以是百分制,也可以是A-E(分别以字符串和枚举类型两种手段表示A-E)。

    浅谈Java泛型让声明方法返回子类型的方法

    通过`&lt;E extends Enum&lt;E&gt;&gt;`,Java强制确保比较的两个枚举实例是同一枚举类型,防止了不兼容的比较。 泛型递归模式不仅用于接口,还可以用于类和方法。它能提供强大的类型安全保证,使得代码更加灵活。例如,如果...

    SE_JAVA_EXP_E046.zip

    在"SE_JAVA_EXP_E046"中,可能涉及了如何正确地抛出和捕获异常,以及如何编写健壮的代码来防止程序因异常而中断。 多线程是Java的一个强项,允许程序同时执行多个任务。学生可能需要学习如何创建和管理线程,理解...

    59e95a4689eeb92f380f4ab2_202109_8dec713c-1467-11ec-8eed-00163e0396a1_java 2实用教程第6版实验指导模板代码(2021-4-1版本).rar

    8. **Chapter 13**: 可能涵盖泛型和枚举。泛型提供了编译时类型安全,枚举则用于定义固定的常量集。学习者将学习如何使用泛型来设计更灵活的类和方法,以及如何定义和使用枚举类型。 9. **Chapter 8**: 可能讲解了...

    java下的enum介绍

    这段代码定义了一个泛型方法`getEnum`,该方法接受一个枚举类和一个字符串参数,返回该枚举类中具有指定名称的枚举常量。 综上所述,Java中的枚举类型提供了一种强大而灵活的方式来定义一组固定的常量,并且可以...

    《Visual C# 2005编程技巧大全》-罗斌-源代码E

    源代码E部分包含了与书中各章节对应的示例程序,方便读者实践和学习。 1. 类与对象:C#的核心是面向对象编程,书中可能涵盖了类的定义、构造函数、析构函数、封装、继承、多态等概念。E001到E008可能对应了这些基础...

    Java高级特性-笔记.pdf

    例如,ArrayList&lt;E&gt;和HashMap,V&gt;中的E、K和V就是泛型类型参数,分别代表元素类型、键类型和值类型。使用泛型集合可以确保插入的数据类型符合预期,且在编译阶段就能捕获类型错误。 Collections是Java提供的一个工具...

    JavaWeb详细笔记

    泛型可以在类、接口和方法上使用,通过使用泛型,我们可以限制集合中存储的数据类型。泛型的通配符如?、? extends E和? super E则提供了更灵活的类型约束。需要注意的是,泛型在编译后会被擦除,因此在运行时不会...

    net框加设计第二版CLR via C#2e

    书中深入分析了泛型的使用,包括定义泛型类、接口和方法,以及泛型约束。 6. 面向组件编程:书中探讨了.NET框架如何支持组件化开发,如Assembly、命名空间、程序集版本控制和强命名,以及如何使用配置文件来管理...

    代码分析策略规则说明

    事件处理程序方法应遵循标准的参数模式,即`sender`参数为`System.Object`类型,`e`参数为`System.EventArgs`类型,这有助于保持代码的一致性和可读性。 这些代码分析规则有助于编写出更高效、可维护和符合设计...

    m2e 适合 eclipse3.X jdk1.6 (maven2eclipse)

    JDK 1.6引入了许多新的特性和改进,例如泛型的增强、枚举类型、并发工具类等,为开发带来了更多的可能性。 【m2e核心功能】 1. **依赖管理**:m2e自动处理Maven项目的依赖关系,下载必要的库文件,避免手动配置。 ...

    swift-SQLite.swift一个类型安全SQLite3封装

    描述中的“纯 Swift 实现”指出这个封装完全使用 Swift 语言编写,没有依赖 Objective-C 框架或其他第三方库,这使得它对 Swift 开发者更加友好,同时也能充分利用 Swift 的语言特性,如枚举、泛型和可选类型等。...

    java面向对象基础增强.docx

    - `compareTo(E o)`:比较枚举值的顺序。 - `name()`:返回枚举常量的名称。 - `ordinal()`:返回枚举常量的索引位置,通常从0开始。 - `toString()`:返回枚举常量的字符串表示。 - `valueOf(Class&lt;T&gt; type, ...

Global site tag (gtag.js) - Google Analytics