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明明没有明确的赋予一个值啊? 展开
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明明没有明确的赋予一个值啊? 展开
4个回答
展开全部
你可以把枚举当作是一种类型,比如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; }这个构造函数。
然后,SMLL("S")是什么意思呢,就相当于你在class Size这个类内部定义了这样一个常量对象:
public static final Size SMLL = new Size("S");
只不过用枚举的话这样这样的声明方式被简成SMLL("S"),这是声明枚举常量的方式,比较简单。就是说这样等于是调用了private Size(String abbreviation) {this.abbreviation = abbreviation; }这个构造函数。
展开全部
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; } //提供有参构造函数
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; } //提供有参构造函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private Size(String abbreviation) {this.abbreviation = abbreviation; }
这段代码想当于setAbbreviation()方法,
这段代码想当于setAbbreviation()方法,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Size size = Enum.valueOf(Size.class,input);
这个代码就是给他赋值的过程。
这个代码就是给他赋值的过程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询