- 浏览: 597412 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (154)
- java (31)
- Struts (3)
- Hibernate (8)
- Spring (6)
- JS (14)
- DWR (1)
- Oracle (1)
- SQL Server (0)
- JSF (0)
- JPA (0)
- Grails (3)
- Ajax (1)
- Extjs (0)
- jQuery (4)
- MySQL (2)
- 正则表达式 (2)
- 其他 (6)
- 计算机应用 (7)
- Groovy (8)
- Google (1)
- Web (2)
- MongoDB Java Driver (1)
- mongodb (1)
- Linux (3)
- HTML (1)
- Tomcat (3)
- Eclipse (2)
- JSP (1)
- 缓存 (1)
- 动态 (1)
- 问题与解决 (3)
- HY (1)
- Android (35)
- LBS (1)
最新评论
-
u012136165:
list 方法:纠正:[2,5].add(1,9) ...
Groovy的list和map -
bruce.yuan:
误人子弟的文章。已经看到N个人转了这个帖子,这要贻害多少新人啊 ...
理解并解决GBK转UTF-8奇数中文乱码 -
思念-悲伤:
特意登录上来,感谢下!
理解String的compareTo()方法返回值 -
bo_hai:
总结的好,有效。
理解String的compareTo()方法返回值 -
u012678420:
在onCreate方法中获取某个View的宽度和高度
为了了解枚举,先利用反射分析一下它
import java.lang.reflect.*;
//定义枚举
enum Car {
FORD,NISSION,BMW
}
public class EnumAnalyze {
public static void main(String[] args) {
System.out.println("Superclass:");
System.out.println(Car.class.getGenericSuperclass());
System.out.println("Interfaces:");
for (Type t : Car.class.getGenericInterfaces())
System.out.println(t);
System.out.println("Fields:");
for (Field f : Car.class.getFields())
System.out.println(f);
System.out.println("Methods:");
for (Method m : Car.class.getDeclaredMethods())
System.out.println(m);
}
}
/*输出如下
Superclass:
java.lang.Enum<Car>
Interfaces:
Fields:
public static final Car Car.FORD
public static final Car Car.NISSION
public static final Car Car.BMW
Methods:
public static Car[] Car.values()
public static Car Car.valueOf(java.lang.String)
*/
通过上面的输出,可以推出枚举代码(当然也可以通过使用javap反编译enum Car)
下面的代码可以让我们很清楚地了解枚举
final class Car extends java.lang.Enum {
public static final Car FORD;
public static final Car NISSION;
public static final Car BMW;
public static Car[] values();
public static Car valueOf(java.lang.String);
}
上面values()和valueOf(java.lang.String)方法是由编译器添加的,再分析一下java.lang.Enum类确定这两个方法不是Enum类的方法
import java.lang.reflect.*;
public class EnumAnalyze {
public static void main(String[] args) {
for (Method m : java.lang.Enum.class.getDeclaredMethods())
System.out.println(m);
}
}
/*输出如下
public final java.lang.String java.lang.Enum.name()
protected final void java.lang.Enum.finalize()
public final boolean java.lang.Enum.equals(java.lang.Object)
public java.lang.String java.lang.Enum.toString()
public final int java.lang.Enum.hashCode()
protected final java.lang.Object java.lang.Enum.clone() throws java.lang.CloneNotSupportedException
public final int java.lang.Enum.compareTo(java.lang.Enum)
public int java.lang.Enum.compareTo(java.lang.Object)
public static java.lang.Enum java.lang.Enum.valueOf(java.lang.Class,java.lang.String)
public final java.lang.Class java.lang.Enum.getDeclaringClass()
private void java.lang.Enum.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException
public final int java.lang.Enum.ordinal()
private void java.lang.Enum.readObjectNoData() throws java.io.ObjectStreamException
*/
枚举可以有自己的属性和方法(也可以把main方法写在Car里面),还可以实现多态
enum Car {
FORD,NISSION,BMW;
int door;
static int wheel;
final void run() {
System.out.println(this.name() + " is running.");
}
}
public class EnumAnalyze {
public static void main(String[] args) {
Car.FORD.door = 2;
System.out.println(Car.BMW.door);
Car.FORD.wheel = 4;
System.out.println(Car.BMW.wheel);
for (Car c : Car.values())
c.run();
}
}
/*输出如下
0
4
FORD is running.
NISSION is running.
BMW is running.
*/
定义构造器(注意构造器要用private修饰符)
enum Car {
FORD,NISSION(4),BMW(2);
private Car() {}
private Car(int door) {
this.door = door;
}
private int door;
public int getDoor() {
return door;
}
}
public class EnumAnalyze {
public static void main(String[] args) {
System.out.println(Car.FORD.getDoor());
System.out.println(Car.NISSION.getDoor());
System.out.println(Car.BMW.getDoor());
}
}
/*输出如下
0
4
2
*/
枚举还可以重写方法
enum Car {
FORD ,
NISSION,
BMW {
void stop() {System.out.println("Override method");}
};
void stop() {
System.out.println("Default method");
}
}
public class EnumAnalyze {
public static void main(String[] args) {
Car.FORD.stop();
Car.NISSION.stop();
Car.BMW.stop();
}
}
/*输出如下
Default method
Default method
Override method
*/
再介绍枚举的几个常用方法
values() //返回所有枚举
name() //返回枚举名
toString() //返回枚举名
ordinal() //返回枚举的位置,从0开始
equals(Enum) //判断是否是同一个枚举
compareTo() //返回枚举的位置差距
valueOf(String) //返回指定的枚举,如果不存在指定的枚举则抛java.lang.IllegalArgumentException异常
valueOf(Class, String) //返回指定枚举类中指定的枚举,如果不存在指定的枚举则抛java.lang.IllegalArgumentException异常
import java.lang.reflect.*;
//定义枚举
enum Car {
FORD,NISSION,BMW
}
public class EnumAnalyze {
public static void main(String[] args) {
System.out.println("Superclass:");
System.out.println(Car.class.getGenericSuperclass());
System.out.println("Interfaces:");
for (Type t : Car.class.getGenericInterfaces())
System.out.println(t);
System.out.println("Fields:");
for (Field f : Car.class.getFields())
System.out.println(f);
System.out.println("Methods:");
for (Method m : Car.class.getDeclaredMethods())
System.out.println(m);
}
}
/*输出如下
Superclass:
java.lang.Enum<Car>
Interfaces:
Fields:
public static final Car Car.FORD
public static final Car Car.NISSION
public static final Car Car.BMW
Methods:
public static Car[] Car.values()
public static Car Car.valueOf(java.lang.String)
*/
通过上面的输出,可以推出枚举代码(当然也可以通过使用javap反编译enum Car)
下面的代码可以让我们很清楚地了解枚举
final class Car extends java.lang.Enum {
public static final Car FORD;
public static final Car NISSION;
public static final Car BMW;
public static Car[] values();
public static Car valueOf(java.lang.String);
}
上面values()和valueOf(java.lang.String)方法是由编译器添加的,再分析一下java.lang.Enum类确定这两个方法不是Enum类的方法
import java.lang.reflect.*;
public class EnumAnalyze {
public static void main(String[] args) {
for (Method m : java.lang.Enum.class.getDeclaredMethods())
System.out.println(m);
}
}
/*输出如下
public final java.lang.String java.lang.Enum.name()
protected final void java.lang.Enum.finalize()
public final boolean java.lang.Enum.equals(java.lang.Object)
public java.lang.String java.lang.Enum.toString()
public final int java.lang.Enum.hashCode()
protected final java.lang.Object java.lang.Enum.clone() throws java.lang.CloneNotSupportedException
public final int java.lang.Enum.compareTo(java.lang.Enum)
public int java.lang.Enum.compareTo(java.lang.Object)
public static java.lang.Enum java.lang.Enum.valueOf(java.lang.Class,java.lang.String)
public final java.lang.Class java.lang.Enum.getDeclaringClass()
private void java.lang.Enum.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException
public final int java.lang.Enum.ordinal()
private void java.lang.Enum.readObjectNoData() throws java.io.ObjectStreamException
*/
枚举可以有自己的属性和方法(也可以把main方法写在Car里面),还可以实现多态
enum Car {
FORD,NISSION,BMW;
int door;
static int wheel;
final void run() {
System.out.println(this.name() + " is running.");
}
}
public class EnumAnalyze {
public static void main(String[] args) {
Car.FORD.door = 2;
System.out.println(Car.BMW.door);
Car.FORD.wheel = 4;
System.out.println(Car.BMW.wheel);
for (Car c : Car.values())
c.run();
}
}
/*输出如下
0
4
FORD is running.
NISSION is running.
BMW is running.
*/
定义构造器(注意构造器要用private修饰符)
enum Car {
FORD,NISSION(4),BMW(2);
private Car() {}
private Car(int door) {
this.door = door;
}
private int door;
public int getDoor() {
return door;
}
}
public class EnumAnalyze {
public static void main(String[] args) {
System.out.println(Car.FORD.getDoor());
System.out.println(Car.NISSION.getDoor());
System.out.println(Car.BMW.getDoor());
}
}
/*输出如下
0
4
2
*/
枚举还可以重写方法
enum Car {
FORD ,
NISSION,
BMW {
void stop() {System.out.println("Override method");}
};
void stop() {
System.out.println("Default method");
}
}
public class EnumAnalyze {
public static void main(String[] args) {
Car.FORD.stop();
Car.NISSION.stop();
Car.BMW.stop();
}
}
/*输出如下
Default method
Default method
Override method
*/
再介绍枚举的几个常用方法
values() //返回所有枚举
name() //返回枚举名
toString() //返回枚举名
ordinal() //返回枚举的位置,从0开始
equals(Enum) //判断是否是同一个枚举
compareTo() //返回枚举的位置差距
valueOf(String) //返回指定的枚举,如果不存在指定的枚举则抛java.lang.IllegalArgumentException异常
valueOf(Class, String) //返回指定枚举类中指定的枚举,如果不存在指定的枚举则抛java.lang.IllegalArgumentException异常
发表评论
-
理解并解决GBK转UTF-8奇数中文乱码
2011-06-18 21:29 27225最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK ... -
Java创建对象的四种方法
2010-12-24 15:10 1264package test; import java ... -
文件上传
2010-12-16 09:42 1094我用Excel数据导入来说明文件上传问题 <form ... -
GBK编码转成UTF-8编码
2010-12-03 15:49 1521从GBK编码转成UTF-8编码 private String ... -
HttpClient请求
2010-11-24 18:22 1626一个apache的httpclient简单范本,常用在WebS ... -
接收任意个字符串的方法
2010-11-10 11:32 1139public class MutilStringParamsD ... -
有状态会话Bean(SLSB)和无状态会话Bean(SFSB)的区别(转)
2010-09-26 10:01 1921Session Bean:分有状态 ... -
ThreadLocal解决线程安全问题
2010-09-25 16:55 3310//以下代码存在问题 pub ... -
AOP之Hello World
2010-09-14 23:41 1144目标 package com.aop.joinpoint; ... -
理解Socket
2010-09-03 00:31 1301服务器端代码: import java.io.Buffered ... -
理解TreeSet.add()方法
2010-08-31 17:35 3299Set存放不同元素,TreeSet存放不同元素,并且对元素进行 ... -
一道Java面试题
2010-08-25 15:40 1326有两组字符串,A组["A","B ... -
理解+=操作符
2010-08-23 14:52 993今天看到一篇文章(下面给出原文链接),对作者的错误理解予以纠正 ... -
更深入地理解自增自减运算符
2010-08-20 17:27 1191public class DeepTest { public ... -
理解重载与重写
2010-08-20 15:51 1117今天有个朋友问我重载与覆盖的区别,所以我就写好了发给他。在这贴 ... -
暴露属性不安全?
2010-08-17 20:19 1245我们在看书的时候常常看到书上说暴露属性不安全,那么请问下哪里不 ... -
理解继承
2010-08-10 11:52 993这个例子涉及到继承与 ... -
获取properties配置文件信息
2010-08-10 11:32 1731import java.io.IOException; imp ... -
中文字符按拼音排序
2010-06-01 13:12 1647java.util.Comparator cmp = java ... -
线程并发
2010-05-25 21:01 1221进程:表示一个任务。 线程:一种比进程更小的执行单位,依附在进 ...
相关推荐
虽然初学者通常只接触基础用法,但深入了解枚举的内在机制和高级特性可以提升代码的质量和可维护性。本文将深入探讨Java枚举的一些鲜为人知的特性。 1. 枚举默认值与自定义值: Java枚举的默认值是从0开始的整数...
- 仔细阅读USB协议标准,了解枚举过程中的每一步具体行为。 - 使用串口或其他方式输出调试信息时,要确保不会因为调试信息输出而影响设备的关键操作。 - 在程序中设置时间点,记录和分析设备在哪些阶段出现延迟,...
5. **界面显示**:为了让用户能够直观了解枚举结果,源码通常会集成到一个图形用户界面(GUI)中,将设备信息展示在列表框或其他控件上。 6. **设备操作**:用户可能需要对枚举出的MTP设备进行进一步操作,如浏览...
首先,让我们了解枚举的基本概念。枚举类型允许我们为一组相关的整数值赋予易于理解的标识符,这样在代码中使用这些标识符会更加清晰易读。在C++中,枚举的定义语法如下: ```cpp enum 枚举名 { 常量名1 = 值1, ...
总结来说,这个压缩包提供了一个很好的学习平台,让易语言初学者能够了解枚举托盘图标的实现方式,同时也为有经验的开发者提供了进一步深入研究易语言和Windows API的机会。通过阅读源码、理解和实践,可以提升编程...
在C++编程语言中,枚举(`enum`)是一种用户自定义...了解枚举的内存占用、类型转换规则以及与整型的差异,对于编写高效且无错的C++代码至关重要。在使用枚举时,应当注意潜在的类型转换风险,并充分理解编译器的行为。
通过阅读这些文件,开发者可以更深入地了解枚举设备的过程,学习如何在实际项目中应用这些技术。 总之,枚举系统中已安装的所有硬件设备是系统管理和设备驱动编程的关键环节,它涉及多个Windows API的使用,理解和...
首先,我们要了解枚举在网络连接中的含义。在编程中,枚举(Enumeration)通常用于定义一组具有命名常量的集合。在网络连接的上下文中,枚举是指遍历并获取系统中所有可用的网络连接状态、名称、IP地址等相关信息。 ...
同时,了解枚举进程内模块的方法,也有助于进行进程间通信、动态注入等功能的开发。 总结来说,"易语言API枚举进程内模块源码"提供了易语言环境下实现进程模块枚举的实例,有助于开发者掌握系统级编程技巧,尤其是...
首先,让我们了解枚举的基本用法。在Java中,我们可以通过以下方式定义一个枚举: ```java public enum Color { RED, GREEN, BLUE } ``` 在这个例子中,`Color`枚举包含三个成员:`RED`、`GREEN`和`BLUE`。 为了...
### 用查询方式学习USB枚举过程的关键...通过上述步骤,我们能够清晰地了解枚举过程中的基本交互机制。这种基于查询方式的学习方法不仅有助于理解USB通信的基本原理,而且还能为进一步深入研究USB编程打下坚实的基础。
本教学设计的主要目标是让高一上学期的信息技术根底学生熟悉用枚举算法设计程序的根本思路,学会使用枚举算法解决现实生活、学习中所遇到的问题,并了解枚举算法的局限性。 一、教学目标 * 知识与技能目标:熟悉用...
枚举Java基础知识点 Java中的枚举(Enumeration)是一种特殊的数据类型,它可以将一组固定的常量分组到一个枚举类型中,使得代码更加简洁、易读和维护。...了解枚举的用法是Java编程的基础知识点。
内容概要:本文详细介绍了C语言中的枚举类型和位...③了解枚举和位操作在状态机和网络协议中的具体应用。 其他说明:本文不仅提供了理论上的解释,还附带了大量的示例代码,帮助读者更好地理解和实践相关概念和技术。
"基础算法枚举贪心分治策略PPT课件" 枚举策略是算法设计中的一个基本思想,指在一个有穷的可能解的...通过本PPT课件的学习,读者可以了解枚举策略的基本思想和优化方法,并掌握如何将枚举策略应用于实际问题的解决中。
首先,我们需要了解枚举窗口的基本步骤: 1. 引入API:在易语言中,我们需要声明并引入`EnumWindows`函数,以及可能需要的其他API,如`GetWindowText`用于获取窗口标题,`IsWindowVisible`判断窗口是否可见等。 2. ...
"2022《C语言程序设计上机指导》项目八枚举与位运算精选ppt" 本资源是关于C语言程序设计的上机指导...本资源为C语言程序设计的上机指导项目,旨在帮助学生了解枚举和位运算的知识点,并通过实验和思考题来加深理解。
知识与技能目标要求学生不仅仅了解枚举算法,更要熟悉其运用方法和存在的局限性;过程与方法则让学生通过实际操作,体验枚举算法的应用;情感态度与价值观方面,我们希望通过教学活动的开展,培养学生对编程的兴趣,...
了解枚举在易语言中的使用方法,包括如何定义枚举类型,如何使用枚举值,将有助于理解和修改代码。 3. **文件系统操作** 收藏夹通常涉及到文件或文件夹的管理,因此源码中很可能包含了读取、遍历文件系统,获取...
Swift是一种强大的、安全的编程语言,由Apple公司开发并用于构建iOS、macOS、watchOS以及tvOS等...通过观看"Swift视频教程 基础语法系列 枚举的定义和语法",你将能够深入了解枚举的各种用法,并将其应用于实际开发中。