小白的问题,请来看一下~~~

llm0528 2008-09-11 10:54:18
代码没难度,就是几个小问题不是很明白,请大家帮忙解释下。
import java.util.*;

public class Enums {
private static Random rand = new Random(47);
public static <T extends Enum<T>> T random(Class<T> ec) {
return random(ec.getEnumConstants());
}
public static <T> T random(T[] values) {
return values[rand.nextInt(values.length)];
}
}


import net.mindview.util.*;

enum SecurityCategory {
STOCK(Security.Stock.class), BOND(Security.Bond.class);
Security[] values;
SecurityCategory(Class<? extends Security> kind) { //问题1:Enum的构造函数,是在什么时候被自动调用的?是在用 values() 读取元素时吗?
values = kind.getEnumConstants();
}
interface Security {
enum Stock implements Security { SHORT, LONG, MARGIN } //问题2:在接口中定义 Enum 然后再实现这个接口,这么做有什么意义?
enum Bond implements Security { MUNICIPAL, JUNK }
}
public Security randomSelection() {
return Enums.random(values);
}
public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
SecurityCategory category =
Enums.random(SecurityCategory.class);
System.out.println(category + ": " +
category.randomSelection());
}
}
}
...全文
201 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
llm0528 2008-09-11
  • 打赏
  • 举报
回复
随便说一句,至于将 enum 放到一个接口中,再实现这个接口,是有点不太好理解,如果谁理解的比较好的,还请不吝赐教~~
llm0528 2008-09-11
  • 打赏
  • 举报
回复
好不容易我自己研究出来。(我汗~~本来想发上来请教的,但结果还是得自己进行研究...)

我说一下好了。枚举SecurityCategory有两个常量。分别是STOCK(Security.Stock.class),BOND(Security.Bond.class)括号后面的内容是传给构造函数的,至于具体什么时候传我不是很清楚,但肯定是在调用values()显示常量之前全部进行初始化的(就是调用构造函数),这个方面我做过试验了,试验代码就不发上来了,好几段太麻烦了。然后在main()方法中for循环先是调用 class Enum 中的random()方法,先随即选取STOCK、BOND中的一个常量,然后在打印的时候 category.randomSelection() 再调用这个随机常量中的 Security[] values; 中的值(在构造器中已经赋值)。

可恶不能给自己加分~~
paudal_1984 2008-09-11
  • 打赏
  • 举报
回复
感覺代碼寫得不好懂,等待高人講解
sanmingwushi 2008-09-11
  • 打赏
  • 举报
回复
学习
helei123a 2008-09-11
  • 打赏
  • 举报
回复
学习
bzwlq 2008-09-11
  • 打赏
  • 举报
回复
学习 中
qusic 2008-09-11
  • 打赏
  • 举报
回复
第一个问题:
应该是在加载这个类,实例化STOCK和BOND这两个常量的时候自动调用的的
第二个问题:
这样相当于这个接口中有两个实现这个接口的常量
amethystic 2008-09-11
  • 打赏
  • 举报
回复
不知道lz说的enum是指哪个enum,不过enum只能有private的构造函数。至于第二问题不太明白这么些的含义
serryzhao 2008-09-11
  • 打赏
  • 举报
回复
不懂
sunshine521521 2008-09-11
  • 打赏
  • 举报
回复
学习ing~

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧