1方法:
public final synchronized void setsize(int newsize);
此方法用来定义向量的大小,若向量对象现有成员个数已经超过了newsize的值,则超过部分的多余元素会丢失。
2程序中定义Enumeration类的一个对象Enumeration是javautil中的一个接口类,
在Enumeration中封装了有关枚举数据集合的方法。
在Enumeration提供了方法hasMoreElement()来判断集合中是否还有其他元素和方法nextElement()来判断集合中是否还有其他元素和方法nextElement()来获取下一个元素。利用这两个方法,可以依次获得集合中的元素。
3Vector中提供方法:
public final synchronized Enumeration elements();
此方法将向量对象对应到一个枚举类型。javautil包中的其他类中也都有这类方法,以便于用户获取对应的枚举类型。
声明一个方向的枚举,包含四个枚举值: 东/西/南/北
Swift 的枚举成员在被创建时本身就是完备的值,这些值的类型是已经明确定义好的 Direction 类型 不会像 Objective-C 一样被赋予一个默认的整型值。在上面的 Direction 例子中,east、west 、north、south不会被隐式地赋值为 0,1,2 和 3。
Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为原始值),则该值的类型可以是:字符串、字符、任意的整数值或浮点类型。
Swift的枚举类型提供了一个叫原始值(RawValues)的实现,它为枚举项提供了一个默认值,这个默认值在编译期间就是确定的。
通过原值值获取的枚举项是可选类型的,所以需要用if let 做一下判断。
未指定枚举值类型
隐式原始值
隐式原始值下枚举项使用系统的分配值:
显式原始值
隐式 + 显式原始值
这里使用了属性观察者,Swift里面的枚举更像一个对象,因此可以很方便的使用属性观察者对枚举值进行监听。
在 Swift 中,还可以定义这样的枚举类型,它的每一个枚举项都有一个附加信息,来扩充这个枚举项的信息表示,这又叫做关联值。
一定要学会使用关联值,这一点很重要。具体的使用后面的第九节会细说
通常情况下枚举是很容易进行相等判断的。一旦为枚举增加了关联值,Swift就没法正确的比较了,需要自己对该枚举实现 == 运算符。
借助 Comparable 协议,来实现枚举的比较。
遵守 CaseIterable 协议的swift枚举是可以遍历的,通过allCases获取所有的枚举成员
app里面的接口地址,如果都放一起,命名或者寻找都不方便,可以用枚举的嵌套来设计。可以分散在多个文件中,方便维护和管理。
用枚举来管理系统里面的常量是一个不错的选择。
枚举中不能使用存储属性,但是可以使用计算属性,计算属性的内容是在枚举值或者枚举关联值中得到的。
在这里,可以认为枚举是一个类,introduced是一个成员方法,AppleDeivceiPhone 就是一个AppleDeivce的实例,case们是它的属性。introduced里面的switch self,其实就是遍历这个匿名属性的所有场景,如iPad,iPhone等,然后根据不同的场景返回不同的值。
可以做枚举的自定义构造方法。
系统的打印协议
让枚举遵守这个协议
枚举可以进行扩展。可以将枚举中的case与method/protocol分隔开,阅读者可以快速消化枚举的内容。
设计一个网络类下的错误信息的处理功能。
在项目中经常使用 UserDefaults 来存储一下简单的用户信息。但是对 Key 的维护不会很方便。而且会想不起来。用枚举+结构体就能很好的解决这个问题。
这么设计APP的存储模块,是不是更有层级感,更加方便使用呢?
递归枚举是拥有另一个枚举作为枚举成员关联值的枚举。当编译器 *** 作递归枚举时必须插入间接寻址层。可以在声明枚举成员之前使用 indirect关键字来明确它是递归的。 也可以声明在整个枚举前,让所有的枚举成员都是递归的。
结果:Mr John Doe
转的。枚举是一个特殊的类。
枚举类型是JDK50的新特征 。Sun引进了一个全新的关键字enum来定义一个枚举类 。下面就是一个典型枚举类型的定义:
Java代码:
public enum Color{
RED,BLUE,BLACK,YELLOW,GREEN
}
显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类 。 而这些类都是类库中Enum类的子类(javalangEnum) 。它们继承了这个Enum中的许多有用的方法 。我们对代码编译之后发现,编译器将enum类型单独编译成了一个字节码文件:Colorclass 。
Color字节码代码
final enum hrtestColor {
// 所有的枚举值都是类静态常量
public static final enum hrtestColor RED;
public static final enum hrtestColor BLUE;
public static final enum hrtestColor BLACK;
public static final enum hrtestColor YELLOW;
public static final enum hrtestColor GREEN;
private static final synthetic hrtestColor〔〕 ENUM$VALUES;
// 初始化过程,对枚举类的所有枚举值对象进行第一次初始化
static {
0 new hrtestColor 〔1〕
3 dup
4 ldc 〔16〕 //把枚举值字符串“RED”压入 *** 作数栈
6 iconst_0 // 把整型值0压入 *** 作数栈
7 invokespecial hrtestColor(javalangString, int) 〔17〕 //调用Color类的私有构造器创建Color对象RED
10 putstatic hrtestColorRED : hrtestColor 〔21〕 //将枚举对象赋给Color的静态常量RED 。
。 。 。 枚举对象BLUE等与上同
102 return
};
// 私有构造器,外部不可能动态创建一个枚举类对象(也就是不可能动态创建一个枚举值) 。
private Color(javalangString arg0, int arg1){
// 调用父类Enum的受保护构造器创建一个枚举对象
3 invokespecial javalangEnum(javalangString, int) 〔38〕
};
public static hrtestColor〔〕 values();
// 实现Enum类的抽象方法
public static hrtestColor valueOf(javalangString arg0);
}
下面我们就详细介绍enum定义的枚举类的特征及其用法 。(后面均用Color举例)
1、Color枚举类就是class,而且是一个不可以被继承的final类 。
其枚举值(RED,BLUE 。)都是Color类型的类静态常量, 我们可以通过下面的方式来得到Color枚举类的一个实例:
Color c=ColorRED;
注意:这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写 。
2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域 。
但是,枚举类的构造器有很大的不同:
(1) 构造器只是在构造枚举值的时候被调用 。
Java代码:
enum Color{
RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);
//构造枚举值,比如RED(255,0,0)
private Color(int rv,int gv,int bv){
thisredValue=rv;
thisgreenValue=gv;
thisblueValue=bv;
}
public String toString(){ //覆盖了父类Enum的toString()
return supertoString()+“(”+redValue+“,”+greenValue+“,”+blueValue+“)”;
}
private int redValue; //自定义数据域,private为了封装 。
private int greenValue;
private int blueValue;
}
(2) 构造器只能私有private,绝对不允许有public构造器 。 这样可以保证外部代码无法新构造枚举类的实例 。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已 。 但枚举类的方法和数据域可以允许外部访问 。
Java代码:
public static void main(String args〔〕)
{
// Color colors=new Color(100,200,300); //wrong
Color color=ColorRED;
Systemoutprintln(color); // 调用了toString()方法
}
3、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法 。
(1) ordinal()方法: 返回枚举值在枚举类种的顺序 。这个顺序根据枚举值声明的顺序而定 。
ColorREDordinal(); //返回结果:0
ColorBLUEordinal(); //返回结果:1
(2) compareTo()方法: Enum实现了javalangComparable接口,因此可以比较象与指定对象的顺序 。Enum中的compareTo返回的是两个枚举值的顺序之差 。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常 。(具体可见源代码)
ColorREDcompareTo(ColorBLUE); //返回结果 -1
(3) values()方法: 静态方法,返回一个包含全部枚举值的数组 。
Color〔〕 colors=Colorvalues();
for(Color c:colors){
Systemoutprint(c+“,”);
}//返回结果:RED,BLUE,BLACK YELLOW,GREEN,
(4) toString()方法: 返回枚举常量的名称 。
Color c=ColorRED;
Systemoutprintln(c);//返回结果: RED
(5) valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量 。
ColorvalueOf(“BLUE”); //返回结果: ColorBLUE
(6) equals()方法: 比较两个枚举类对象的引用 。
Java代码:
//JDK源代码:
public final boolean equals(Object other) {
return this==other;
}
4、枚举类可以在switch语句中使用 。
Java代码:
Color color=ColorRED;
switch(color){
case RED: Systemoutprintln(“it‘s red”);break;
case BLUE: Systemoutprintln(“it’s blue”);break;
case BLACK: Systemoutprintln(“it‘s blue”);break;
}
注意看valueOf的返回值,这里返回的是一个enum对象,也就是生成这个对象,并不是增加对象,相当于用指定的类型及名称生成一个枚举类型对象,有点像构造函数(虽然还是很多不同,但类似)
一, 从controller往视图传递值,controller---->视图
1)简单类型,如int, String,直接写在controller方法的参数里,是无法传递到视图页面上的(经测试)。
(而用@RequestParam("name")注解,可以从视图上,或地址中加name=传递到controller方法里)
2)可以用Map<String, Object>,其键值可以在页面上用EL表达式${键值名}得到,
3)也可以用Model类对象来传递,有addAttribute(key, value)方法,其键值可以在页面上用EL表达式${键值名}得到,
如果用addAttribute(value)这个方法,会将类型名的首字母改成小写后,作为键值名传递过去,例如"ok"在页面上用${string}得到,而一个复合类对象,如User类对象,页面上用${user}得到该对象,用${userpropertyName}得到其属性,这是用Model的一大优势。
例如,modeladdAttribute(new User("my姓名","我的爱好有游泳打球"));
这样页面上就能用${username}和${userhobby}打印对应属性
@RequestMapping(value={"/","/hello"})
public String hello(int id,Map<String,Object> map) {
Systemoutprintln(id);
Systemoutprintln("hello");
mapput("hello", "world");
return "hello";
}
@RequestMapping(value="/say")
public String say(@RequestParam int id,Model model) {
Systemoutprintln("say");
modeladdAttribute("hello", "value");
//使用Object的类型作为key,String-->string
modeladdAttribute("ok");
return "hello";
} >
枚举元素就相当于一个类的实例对象,加(1)就是相当于调用了相应的构造函数(这个需要自己写的),如果想用这个数据,就在构造方法里面写上类似thisx=x;这样的话就可以了()具体可以参看高新技术15、16两课
以上就是关于在java中怎么取出数组中的数据全部的内容,包括:在java中怎么取出数组中的数据、Swift-细说枚举(Enum)、java,求高手讲解一下一个枚举的例子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)