刚学枚举类型是总觉的枚举类型似乎多此一举,一直在想枚举类型有什么意义。
看到网络上很多枚举类型的例子,觉的很适合颜色调配这个案例,感觉枚举最大的意义是可以像对象一样操作。
自己结合枚举的优点写了一个实用的例子,代码会优雅和精简了许多,供参考。
package utils;
public enum LxzColor{
Red(255,0,0),
Green(0,255,0),
Blue(0,0,255),
Black("#000000"),
Purple("#6F00D2"),
Yello("#F9F900"),
White("#FFFFFF");
//模式RGB色,HTML色
enum ColorAdapter{
All{
public String toString(LxzColor clr) {
return "["+"htmlcode="+clr.htmlcode+" RGB={"+clr.r+","+clr.g+","+clr.b+","+"}"+"]";
}
},
RGB{
public String toString(LxzColor clr) {
return "["+clr.r+","+clr.g+","+clr.b+"]";
}
},
HTML{
public String toString(LxzColor clr) {
return clr.htmlcode;
}
};
public String toString(LxzColor clr) {
return "["+"htmlcode="+clr.htmlcode+" RGB={"+clr.r+","+clr.g+","+clr.b+","+"}"+"]";
}
}
String htmlcode;
int r;
int g;
int b;
private LxzColor(String htmlcolor)
{
htmlcode=htmlcolor;
r=Integer.valueOf(""+htmlcolor.charAt(1)+htmlcolor.charAt(2),16);
g=Integer.valueOf(""+htmlcolor.charAt(3)+htmlcolor.charAt(4),16);
b=Integer.valueOf(""+htmlcolor.charAt(5)+htmlcolor.charAt(6),16);
}
private LxzColor(int r,int g,int b)
{
this.r=r;
this.g=g;
this.b=b;
String $r=String.valueOf(Integer.toHexString(r));
$r=$r.length()==1?0+$r:$r;
String $g=String.valueOf(Integer.toHexString(g));
$g=$g.length()==1?0+$g:$g;
String $b=String.valueOf(Integer.toHexString(b));
$b=$b.length()==1?0+$b:$b;
htmlcode=("#"+$r.toUpperCase()+$g.toUpperCase()+$b.toUpperCase());
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}
public String toString(ColorAdapter type) {
// TODO Auto-generated method stub
return type.toString(this);
}
}
package utils;
import utils.LxzColor.ColorAdapter;
public class dotest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(LxzColor.values());
//打印
System.out.println(LxzColor.Black);
System.out.println(LxzColor.valueOf("Red"));
System.out.println(LxzColor.valueOf(LxzColor.Blue.toString()));
System.out.println("----------------------");
for(int i=0;i<LxzColor.values().length;i++)
{
System.out.println("序列数"+LxzColor.values()[i].ordinal());
System.out.println(LxzColor.values()[i]);
System.out.println(LxzColor.values()[i].toString(ColorAdapter.RGB));
System.out.println(LxzColor.values()[i].toString(ColorAdapter.HTML));
System.out.println(LxzColor.values()[i].toString());
System.out.println("----------------------");
}
}
}
输出结果
[Lutils.LxzColor;@61de33
Black
Red
Blue
----------------------
序列数0
Red
[255,0,0]
#ff0000
Red
----------------------
序列数1
Green
[0,255,0]
#00ff00
Green
----------------------
序列数2
Blue
[0,0,255]
#0000ff
Blue
----------------------
序列数3
Black
[0,0,0]
#000000
Black
----------------------
序列数4
Purple
[111,0,210]
#6F00D2
Purple
----------------------
序列数5
Yello
[249,249,0]
#F9F900
Yello
----------------------
序列数6
White
[255,255,255]
#FFFFFF
White
----------------------
分享到:
相关推荐
《O'Reilly Java Cookbook》是一本深受程序员喜爱的书籍,它提供了大量实用的Java代码示例,帮助开发者解决日常编程中遇到的问题。这个压缩包“ian从其他地方的OReilly Java Cookbook中收集代码示例.zip”显然包含了...
枚举类型是Java语言中一个非常实用且灵活的功能。通常情况下,我们将其用于表示一组固定的常量集合,如一周中的几天、颜色选项等。然而,Java中的枚举类型远不止于此。本文将深入探讨枚举类型的一些高级特性,包括...
在提供的代码示例中,定义了以下几个方法: - `getName(int index)`:根据索引返回枚举值的名称和路径。 - `toString()`:重写了默认的`toString()`方法,返回枚举值的名称、路径和索引。 - `getName()`、`set...
`chapter15`的源码可能会展示如何动态获取类的信息,使用注解进行元编程,以及枚举类型的应用。 10. **第十三章和第八章**:可能涵盖其他重要主题,如泛型、枚举、IO流的高级用法或者GUI编程,具体要看书籍的安排。...
这个压缩包文件“Java2实用教程(第5版)习题解答及例子代码.zip”是配套教学资源,包括了书中的习题解答和所有示例代码,旨在帮助读者更好地理解和实践所学知识。 1. **Java基础知识**:Java是一种面向对象的编程...
"Java实用编程100例源代码(全集)"是一个集合,包含了100个用Java编写的实用示例,旨在帮助开发者深入理解和掌握Java编程技术。这个资源可能包括了各种常见问题的解决方案,涵盖了基础到高级的Java编程概念。 首先,...
11. **枚举与注解**:学习Java枚举类型的应用,以及注解的定义和使用场景。 12. **IO流与NIO**:对比传统IO和NIO(New IO)的区别,介绍缓冲区、选择器和非阻塞I/O。 13. **网络编程**:讲解套接字(Socket)编程...
这些子文件夹代表了教材中的各个章节,每个章节可能包含了与该章教学内容相关的源代码示例。下面我们将对这些章节可能涉及的主要Java知识点进行详述: 1. **ch1** - Java简介:这一章通常会介绍Java的历史、特点、...
易用性:采用枚举类型设计,避免了硬编码带来的困扰,使代码更加清晰、易于理解和维护。 高度定制:支持轻松添加自定义MIME类型,满足特定项目需求,无需担心未来格式的兼容性问题。 性能优化:由于使用了枚举而非...
9. **枚举**:枚举类型是Java中的一种特殊类,用于表示有限的固定数量的值。 10. **JDBC**:Java数据库连接,用于在Java程序中访问和操作数据库。 课件部分,例如"Java 2实用教程课件(第3版第1章).ppt",通常...
从提供的部分内容来看,包含了一系列的Java程序代码示例,这些示例可能用于练习Java的语法结构、面向对象概念以及算法实现。以下是对一些示例的解释: - **示例1**:演示了如何打印从'a'到'z'的字符。 - **示例2**...
这个压缩包包含了多个章节的代码示例,包括chapter1到chapter15,旨在帮助学习者通过实践来掌握Java语言的核心概念和技术。下面将详细阐述这些章节可能涉及的Java知识点。 1. **Chapter 1:基础语法** 这一章通常...
除此之外,你还可以期待看到输入输出流、反射、注解、枚举、枚举类型、内省、动态代理等高级Java特性的源代码示例。这些内容将帮助你提升到更高级的Java编程水平。 总之,这份《Thinking in Java 4》的源码是一个...
这本书涵盖了从基础到高级的Java编程概念,通过35个章节的示例代码,帮助读者深入理解Java语言的核心特性。下面将详细阐述这些知识点。 1. **Java语言基础**:在最初的章节,你将学习Java的基本语法,包括变量声明...
Java枚举 - **枚举特点**: - 枚举类型可以定义一组有限的常量值。 - 枚举类型可以有自己的方法、构造函数等。 - **实际应用**: - 用于定义状态机的状态。 - 作为配置项的枚举列表。 #### 8. 常用前端框架简介 ...
"java语言的简单入门67个常用的源代码"集合提供了一个良好的学习起点,它包含了67个实用的代码示例,涵盖了Java语言的基础知识。 1. **基本语法**:Java的源代码以`.java`为扩展名。每个源文件可以包含一个公共类...
11. **枚举与注解**:枚举类型提供了常量集合,而注解则为编译器和JVM提供了元数据,用于代码的自解释和处理。 12. **JDBC**:Java数据库连接(JDBC)API是访问各种数据库的标准,包括SQL查询、事务处理和结果集...
11. **枚举与注解**: 通过例题,了解枚举类型(enum)的使用,以及自定义注解和元注解的创建与应用。 12. **泛型**: 书中例题会涵盖泛型类、泛型方法和通配符的使用,以提高代码的类型安全性和重用性。 13. **GUI...
9. **枚举类型**:Java 5引入的枚举,提供了一种安全的常量表示方式。 10. **Swing或JavaFX GUI**:用于创建图形用户界面,提供丰富的组件和布局管理器。 11. **网络编程**:Java的Socket类和ServerSocket类用于...
13. **枚举类型**:枚举类型是Java 5引入的新特性,用于定义一组预定义的常量。 14. **Lambda表达式和函数式编程**:Java 8引入了Lambda表达式,简化了函数式编程,使得编写简洁、高效的代码成为可能。 15. **模块...