Java 关于枚举,这段代码到底是怎样执行的

packageenums;importjava.util.*;publicclassEnumTest{publicstaticvoidmain(String[]args)... package enums;

import java.util.*;
public class EnumTest
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a size:(SMLL,MEDIUM,LARGE,EXTRA_LARGE)");
String input = in.next().toUpperCase();
Size size = Enum.valueOf(Size.class,input);
System.out.println("Size="+size);
System.out.println("abbreviation="+size.getAbbreviation());
if(size == Size.EXTRA_LARGE)
System.out.println("Good job--you paid attention to the _.");

}
}

enum Size
{
SMLL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");

private Size(String abbreviation) {this.abbreviation = abbreviation; }
public String getAbbreviation() { return abbreviation; }

private String abbreviation;
}

代码中的this.abbreviation是什么时候被赋值的,又是怎样赋值的。abbreviation明明没有明确的赋予一个值啊?
展开
 我来答
duoloniori
推荐于2016-08-07 · TA获得超过456个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:232万
展开全部
你可以把枚举当作是一种类型,比如enum Size你可以看作class Size这样的声明。
然后,SMLL("S")是什么意思呢,就相当于你在class Size这个类内部定义了这样一个常量对象:
public static final Size SMLL = new Size("S");
只不过用枚举的话这样这样的声明方式被简成SMLL("S"),这是声明枚举常量的方式,比较简单。就是说这样等于是调用了private Size(String abbreviation) {this.abbreviation = abbreviation; }这个构造函数。
huazheng_wu
2014-11-03 · TA获得超过187个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:115万
展开全部
Size size = Enum.valueOf(Size.class,input);

Size size = Size.valueOf(input)
上面两个方法是同等的.
private String abbreviation; //定义属性
private Size(String abbreviation) {this.abbreviation = abbreviation; } //提供有参构造函数
public String getAbbreviation() { return abbreviation; }//获取属性值

Enum.valueOf(Size.class,input)调用构造函数,并赋值
private Size(String abbreviation) {this.abbreviation = abbreviation; } //提供有参构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
o0o0o0ppkdc
2014-11-03 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:103万
展开全部
private Size(String abbreviation) {this.abbreviation = abbreviation; }
这段代码想当于setAbbreviation()方法,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lip216
2014-11-03 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:76.8万
展开全部
Size size = Enum.valueOf(Size.class,input);

这个代码就是给他赋值的过程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式