草庐IT

用于静态值的 Java Enum 或 HashMap

我正在生成一个CSV文件和CTL文件以供sqlldr使用。CTL文件需要知道我要加载的列的名称,而我的CSV文件需要知道这些字段的默认值。/**ModelsalineintheCSVfile*/publicclassCSVRecord{...}/**ModelstheCTLfile*/publicclassControlFile{...}这两个类在CSVExportFile中初始化和使用,我有两种方法:1。枚举publicenumColumns{ID("1"),NAME("Bob"),...}2。HashMappublicclassCSVExportFile{privateHashMa

java - 如何为 Spring Security 创建类型安全的用户角色?

我想将spring-security与ROLE_ADMIN和ROLE_USER角色结合使用。因此,我尝试创建一个类型安全的枚举类,但是@Secured注释需要一个常量String,这是我无法通过使用枚举类实现的。我可以在以下代码中更改什么?publicenumUserRole{ADMIN("ROLE_ADMIN");privateStringrole;publicUserRole(Stringrole){this.role=role;}}//error:ThevalueforannotationattributeSecured.valuemustbeaconstantexpressio

java - 枚举定义中的静态上下文

Java的enum工具提供的语法糖有时会有点令人困惑。考虑这个不编译的例子:publicenumTestEnum{FOO("foo"){publicvoidfoo(){helper();//谁能解释为什么编译器说Non-staticmethod'helper()'cannotbereferencedfromastaticcontext这个上下文究竟是静态的吗?您可以通过更改对this.helper()的调用来进行编译(这里有一个令人困惑的地方:如果我们真的是在编译器建议的“静态上下文”中,“this”如何工作?)或通过将helper()的可见性提高到默认级别。你更喜欢哪个?另外,请随时

java - 异常处理模式

这是我看到的一种常见模式,其中与异常关联的错误代码存储为静态最终整数。当创建要抛出的异常时,它是用这些代码之一和一条错误消息构造的。这导致将要捕获它的方法必须查看代码,然后决定一个操作过程。替代方案似乎是为每个异常错误情况声明一个类(尽管相关的异常会派生自一个公共(public)基类)有中间立场吗?推荐的方法是什么? 最佳答案 回答您的具体问题:您的决定应基于处理异常的方式和原因。您是否想让您的程序尽可能万无一失,并方便地分别对每种可能的错误情况使用react?那么你确实应该为你能识别的每一个可能的错误原因创建一个异常类。否则,最好

java - 枚举的枚举为 NULL

我正在为我的Java1.6大学类(class)开发一个LALG编译器。所以我上了类型课和语法课。枚举类型publicenumEnumTypes{A("OLA"),B("MUNDO"),C("HELLO"),D("WORLD"),/***Theorderbelowisreversedonpurpose.*RevertitandwillyougetaNULLlistoftypesfurder.*/I(EnumGrammar.THREE),H(EnumGrammar.TWO),F(EnumGrammar.ONE),E(EnumGrammar.ZERO);privateStringstrVal

java - 按值查找枚举的正确方法

我有几个Java枚举,如下所示(出于保密等原因进行了编辑)。在每种情况下,我都有一个我真的不满意的查找方法;在下面的示例中,它是findByChannelCode.publicenumPresentationChannel{ChannelA("A"),ChannelB("B"),ChannelC("C"),ChannelD("D"),ChannelE("E");privateStringchannelCode;PresentationChannel(StringchannelCode){this.channelCode=channelCode;}publicStringgetChann

java - 在 JSTL 中访问 Map<Enum, Object>

我有:publicenumMyEnum{One,Two,Three}从Controller,我放入模型:HashMapmap=newHashMap();map.put(MyEnum.One,1L);mav.addObject("map",map);我如何在我的JSTL中以简洁的方式访问键枚举MyEnum.One映射中的对象?${map['One']}//doesnotseemtowork...也没有${map[MyEnum.One]} 最佳答案 您不能完全做到这一点并不完全正确,但解决方案并不是完全直接的。问题是EL没有将您作为ma

java - 将 Enum 放入键值对的最简单方法

我已经这样定义了我的枚举。publicenumUserType{RESELLER("Reseller"),SERVICE_MANAGER("Manager"),HOST("Host");privateStringname;privateUserType(Stringname){this.name=name;}publicStringgetName(){returnname;}}从枚举值中获取键值对的最简单方法应该是什么?我要创建的输出图应该是这样的key=Enum(example:-HOST)value=Host我想要定义的map是Mapconstansts=newHashMap();

java枚举排序

我正在使用java枚举来定义如何呈现带有按钮的模态窗口(Vaadin处理呈现)。我的问题是,当我运行gui时,我的按钮每次都以随机顺序出现。所以我的问题是,因为我使用枚举集来固定我的按钮,那会是无序的吗?使其成为有序列表的最佳方法是什么?我的设置枚举publicenumMODAL_SETTINGS{NEW_MODAL_WINDOW("menu.context.new","400",MODAL_BUTTON.SAVE,MODAL_BUTTON.CANCEL),EDIT_MODAL_WINDOW("menu.context.modify","400",MODAL_BUTTON.UPDATE

java - 没有 main() 的 Quine 程序

我遇到了这个littlequineprogram,写的没有main方法:enumf{f;Systemz;Strings="enumf{f;Systemz;Strings=%c%s%1$c;{z.out.printf(s,34,s);z.exit(0);}}";{z.out.printf(s,34,s);z.exit(0);}}有人可以解释一下这是如何工作的吗?谢谢。 最佳答案 第5行和第6行是一个instanceinitializer.它在实例化类时调用。由于这是一个具有名为f的常量的枚举,因此它将被实例化一次并执行实例初始化程序b