枚举的问题思考??? 枚举在JavaBean中有没有getter和setter方法,要怎样在业务逻辑层里调用enum中的值呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用反射调用方法,lz可以参考一下JDK API。 枚举(enum): 1.Java 5 新增,是类类型,但不能使用new 不能继承其他类,也不能作为超类,即不能扩展.但隐式继承自java.lang.Enum类,可以实现接口. 2.枚举包括两个预定义方法: public static enum-type[] values(); public static enum-type valueOf(String st); 用于for-each循环遍历枚举常量. 且可以用”==”来判断两个枚举常量是否相等. 从Enum继承而来三个方法: final int ordinal() ----返回常量顺序值 final int compareTo(enum-Type e) -----同一枚举中比较顺序值 final Boolean equals(enum-type e) -----同一枚举中是否相等,相当于”==” 3.在switch表达示中case语句不需也不能加入枚举的类型,否则会出错. 4.枚举是类类型,可以定义构造函数,且可以重载,同样也可定义其他的实例方法和变量,这些每一个枚举常量都有自己的一个副本.甚至可以定义静态的成员.可以实现接口. 如:public enum Answer implements DoAnswer{ Perfect(10),Good(8),Common(5),Bad(2),Terrible;//枚举常量,相当于public static Answer类型 public static int type=1; //定义一个静态成员 private int degree; //定义一个实例成员变量 private Answer(){ //定义一个不带参数的构造函数,注只能为private的,默认也一样 degree=-1; } private Answer(int d){ //定义一个带参数的重载构造函数 degree=d; } public String getProblem(){ //实现接口方法 return DoAnswer.PROBLEM; } public int getDegree(){ //定义一个实例成员函数 return degree; } public Answer getAnswer(){ //定义一个返回自身的成员函数,每一个常量都有自己的副本 return this; } } 在使用 enum 关键字创建新的枚举类型时,实际上是在创建 java.lang.Enum 类的子类enum Size {Small, Medium, Large} 将映射到下面所示的构造函数调用中: new Enum<Size>("Small", 0); new Enum<Size>("Medium", 1); new Enum<Size>("Large", 2);关于枚举的两个例子public class Student { private String firstName; private String lastName; private static Grade grade; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getFirstName() { return firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getLastName() { return lastName; } public String getFullName() { return new StringBuffer(firstName) .append(" ") .append(lastName) .toString(); } public static void assignGrade(Grade grade2) { grade = grade2; } public Grade getGrade() { return grade; } public enum Grade { A, B, C, D, F, INCOMPLETE }; public static void main(String[] args) { grade = Grade.A; System.out.println(grade); assignGrade(Grade.B); System.out.println(grade); System.out.println(); }}输出Bpublic class Sample { enum Size { Small('a'), Medium('b'), Large('c'); char pricingFactor; public char getPricingFactor() { return pricingFactor; } Size(char p) { pricingFactor = p; } } enum Size2{ Small(0.8,0.9), Medium(1.0,1.1), Large(1.2,1.3); Double a,b; Size2(double p,double q){this.a=p;this.b=q;} } public static void main(String args[]) { Size s = Size.Large; char d = s.pricingFactor; System.out.println(s + " Size has pricing factor of " + d); Size2 s2=Size2.Large; double e=s2.a; System.out.println(e); }}输出Large Size has pricing factor of cc1.2enum Size {Small, Medium, Large} 将映射到下面的构造函数调用中: new Enum<Size>("Small", 0); new Enum<Size>("Medium", 1); new Enum<Size>("Large", 2);遍历枚举值public void listGradeValues(PrintStream out) throws IOException { for (Grade g : Grade.values()) { out.println("Allowed value: '" + g + "'"); }}java.util 程序包中包含两个类:EnumMap 和 EnumSet,这两个类有助于使处理枚举类型变得更容易一些。EnumMap 类提供了 java.util.Map 接口的一个特殊实现,该接口中的键(key)是一个枚举类型。EnumSet 类提供了 java.util.Set 接口的实现,该接口保存了某种枚举类型的值的集合。import java.util.*;public class EnumMapSample { enum Size { Small, Medium, Large; } public static void main(String args[]) { Map<Size, Double> map = new EnumMap<Size, Double>(Size.class); map.put(Size.Small, 0.8); map.put(Size.Medium, 1.0); map.put(Size.Large, 1.2); for (Map.Entry<Size, Double> entry : map.entrySet()) { helper(entry); } } private static void helper(Map.Entry<Size, Double> entry) { System.out.println("Map entry: " + entry); }}输出Map entry: Small=0.8Map entry: Medium=1.0Map entry: Large=1.2 http://blog.csdn.net/YidingHe/archive/2009/04/11/4064816.aspx What is the best strategy for loading property and configuration files in Java? java打印机获得当前打印机 两个vector对比,删除重复元素??? 2叉树问题求教 怎么样调用java中的hash函数 急问一个莫名其妙的错误,顺便散分 :) 关于\u的问题 关于JAVA的小小问题 紧急求助;关于xls新旧版不兼容问题。 一个小问题,JAVA中计算某个过程的执行时间,回答了马上给分,10分钟内响应啊 JDBC eclipse打jar包的问题
1.Java 5 新增,是类类型,但不能使用new
不能继承其他类,也不能作为超类,即不能扩展.但隐式继承自java.lang.Enum类,可以实现接口.
2.枚举包括两个预定义方法:
public static enum-type[] values();
public static enum-type valueOf(String st); 用于for-each循环遍历枚举常量.
且可以用”==”来判断两个枚举常量是否相等.
从Enum继承而来三个方法:
final int ordinal() ----返回常量顺序值
final int compareTo(enum-Type e) -----同一枚举中比较顺序值
final Boolean equals(enum-type e) -----同一枚举中是否相等,相当于”==”
3.在switch表达示中case语句不需也不能加入枚举的类型,否则会出错.
4.枚举是类类型,可以定义构造函数,且可以重载,同样也可定义其他的实例方法和变量,这些每一个枚举常量都有自己的一个副本.甚至可以定义静态的成员.可以实现接口.
如:public enum Answer implements DoAnswer{
Perfect(10),Good(8),Common(5),Bad(2),Terrible;//枚举常量,相当于public static Answer类型
public static int type=1; //定义一个静态成员
private int degree; //定义一个实例成员变量
private Answer(){ //定义一个不带参数的构造函数,注只能为private的,默认也一样
degree=-1;
}
private Answer(int d){ //定义一个带参数的重载构造函数
degree=d;
}
public String getProblem(){ //实现接口方法
return DoAnswer.PROBLEM;
}
public int getDegree(){ //定义一个实例成员函数
return degree;
}
public Answer getAnswer(){ //定义一个返回自身的成员函数,每一个常量都有自己的副本
return this;
}
}
enum Size {Small, Medium, Large} 将映射到下面所示的构造函数调用中: new Enum<Size>("Small", 0); new Enum<Size>("Medium", 1); new Enum<Size>("Large", 2);
关于枚举的两个例子
public class Student {
private String firstName;
private String lastName;
private static Grade grade;
public Student(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
public String getFullName() {
return new StringBuffer(firstName)
.append(" ")
.append(lastName)
.toString();
}
public static void assignGrade(Grade grade2) {
grade = grade2;
}
public Grade getGrade() {
return grade;
}
public enum Grade {
A, B, C, D, F, INCOMPLETE
};
public static void main(String[] args) {
grade = Grade.A;
System.out.println(grade);
assignGrade(Grade.B);
System.out.println(grade);
System.out.println();
}
}
输出Bpublic class Sample {
enum Size {
Small('a'),
Medium('b'),
Large('c');
char pricingFactor; public char getPricingFactor() { return pricingFactor;
}
Size(char p) {
pricingFactor = p;
}
}
enum Size2{
Small(0.8,0.9),
Medium(1.0,1.1),
Large(1.2,1.3);
Double a,b;
Size2(double p,double q){this.a=p;this.b=q;}
}
public static void main(String args[]) {
Size s = Size.Large;
char d = s.pricingFactor;
System.out.println(s + " Size has pricing factor of " + d);
Size2 s2=Size2.Large;
double e=s2.a;
System.out.println(e);
}
}
输出
Large Size has pricing factor of c
c
1.2enum Size {Small, Medium, Large} 将映射到下面的构造函数调用中: new Enum<Size>("Small", 0); new Enum<Size>("Medium", 1); new Enum<Size>("Large", 2);遍历枚举值public void listGradeValues(PrintStream out) throws IOException { for (Grade g : Grade.values()) { out.println("Allowed value: '" + g + "'"); }}java.util 程序包中包含两个类:EnumMap 和 EnumSet,这两个类有助于使处理枚举类型变得更容易一些。EnumMap 类提供了 java.util.Map 接口的一个特殊实现,该接口中的键(key)是一个枚举类型。EnumSet 类提供了 java.util.Set 接口的实现,该接口保存了某种枚举类型的值的集合。
import java.util.*;
public class EnumMapSample {
enum Size {
Small,
Medium,
Large;
}
public static void main(String args[]) {
Map<Size, Double> map = new EnumMap<Size, Double>(Size.class);
map.put(Size.Small, 0.8);
map.put(Size.Medium, 1.0);
map.put(Size.Large, 1.2);
for (Map.Entry<Size, Double> entry : map.entrySet()) {
helper(entry);
}
}
private static void helper(Map.Entry<Size, Double> entry) {
System.out.println("Map entry: " + entry);
}
}
输出
Map entry: Small=0.8
Map entry: Medium=1.0
Map entry: Large=1.2