- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
错误:
...
Caused by: java.lang.ExceptionInInitializerError
...
Caused by: java.lang.ClassCastException:
class com.evopulse.ds2150.TechTrees$BuildingTechTree
not an enum
at java.util.EnumSet.noneOf(Unknown Source)
at java.util.EnumSet.of(Unknown Source)
at com.evopulse.ds2150.TechTrees$BuildingTechTree.<clinit>(TechTrees.java:38)
这是我的枚举的片段
public enum BuildingTechTree {
//Name SoftName Requirements
NONE ("NULL", null),
--> 下一行是它崩溃的地方
BARRACKS ("Barracks", EnumSet.of(NONE),
WALLS_SANDBAGS ("Sandbag wall", EnumSet.of(NONE),
POWERPLANT ("Power plant", EnumSet.of(BARRACKS)),
GUARDTOWER ("Guard Tower", EnumSet.of(BARRACKS));
将 EnumSet.of(NONE) 和 EnumSet.of(BARRACKS) 替换为 null,让初始化工作,但由于缺少数据结构而破坏了我的代码……显然,但我这样做是为了测试我的其余代码不知何故不是原因。
删除 EnumSet.of(NONE) 并仅替换为 NONE,对 BARRACKS 也是如此,并更改所有相关变量、构造函数和方法,这也不起作用...(甚至无法使用contains.all,因为它不是“适用于我更改的变量”...)
我扩展了这个例子,使用第二个实现: https://gamedev.stackexchange.com/a/25652/48573
我还尝试通过逐字复制示例来回溯我的步骤。添加了
private static Set<BuildingTechTree> techsKnown;
techsKnown = (BuildingTechTree.BIODOME);
test = TechTrees.researchTech(techsKnown);
调用另一个类来测试初始化。不得不改变
public boolean researchTech(BuildingTechTree tech) {
静态
这导致了同样的“in not an enum”错误。我没有任何代表评论他的回答以指出初始化错误...
为两个当前答案添加了信息,因为两个解决方案都会导致相同的新错误:
public class TechTrees {
private static Set<BuildingTechTree> techsKnown;
public TechTrees() {
techsKnown = EnumSet.of(BuildingTechTree.NONE); //Using this
techsKnown = EnumSet.noneOf(BuildingTechTree.class); //Or this
}
public static boolean researchTech(BuildingTechTree tech) {
if (techsKnown.containsAll(tech.requirements)) { //Causes null pointer
return true; //exception @ techsKnown
}
return false;
}
最佳答案
您的声明结构非常巧妙,可惜它不起作用。但是 EnumSet
显然需要先完全初始化枚举。它尝试从枚举中获取常量数组,以便除其他事项外,它知道其内部位集需要多少空间。
这是一种解决方法。它使用辅助方法首先创建一个普通集合 (HashSet
),然后在静态初始化 block 中迭代枚举常量并将所有集合替换为 EnumSet
public enum BuildingTechTree {
// Named constants
//Name SoftName Requirements
NONE ("NULL", null),
BARRACKS ("Barracks", setOf(NONE)),
WALLS_SANDBAGS ("Sandbag wall", setOf(NONE)),
POWERPLANT ("Power plant", setOf(BARRACKS)),
GUARDTOWER ("Guard Tower", setOf(BARRACKS));
private final String softName;
private Set<BuildingTechTree> requirements;
private BuildingTechTree(String softName, Set<BuildingTechTree> requirements) {
this.softName = softName;
this.requirements = requirements;
}
private static Set<BuildingTechTree> setOf(BuildingTechTree... values) {
return new HashSet<>(Arrays.asList(values));
}
static {
for (BuildingTechTree v : values()) {
if (v.requirements == null) {
v.requirements = EnumSet.noneOf(BuildingTechTree.class);
} else {
v.requirements = EnumSet.copyOf(v.requirements);
}
}
}
}
关于Java:无法在枚举中使用 EnumSet:初始化错误:Tech Research Talent Tree 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33777646/
我正在尝试使用Apple的ResearchKit进行调查,但是找不到如何更改预定义按钮的颜色。它们是蓝色的,但我想使它们具有不同的颜色。这个怎么做? 最佳答案 使用UIView的外观代理设置色调颜色应
我尝试创建一个新的研究人员,但我只是陷入了困境,并且没有出现任何错误。我是使用 sequelize 的新手,我需要很多帮助来解决这个问题,我在 git 中的完整代码: https://github.c
我正在使用 fos_elastica 在 symfony2 项目中实现 elasticsearch。 一切正常(索引数据、更新等) 我目前正在寻找用户行为分析:我想获得用户搜索最多的 10 个或关键字
大家好,我是 Swift 的新手,我尝试使用研究工具包应用程序构建饼图。 我引用这个 link 写了一些代码 当运行我的代码时,它显示错误“Type 'ViewController' does not
我目前正在从事学术目的的自然语言处理工作,我想获取 Microsoft Research Sentence Completion Challenge 数据集。 不幸的是,它似乎不再可用 on Micr
如何在 colab.research.google 上安装 rpy2?我尝试了以下命令: pip install rpy2 import rpy2 但它不起作用。这是得到的错误: Collecting
运行“https://github.com/tensorflow/federated/blob/master/tensorflow_federated/python/research/gans/exp
我是 python selenium 的菜鸟。我必须从 Research Gate 中某个机构的成员页面导航所有成员,这意味着我必须单击第一个成员才能转到他们的个人资料页面,然后返回到成员页面以单击下
嗨! 在哪里可以找到 Microsoft.Research.Kinect.dll?我已经安装了 Kinect SDK 1.5 和它的工具包,但我没有找到 dll。我不知道。如果你知道请与我分享 最佳答
我知道 apple 尚未发布用于开发的研究套件。 https://developer.apple.com/researchkit/说会在下个月发布。 但是http://fortune.com/2015
所以我想使用 python-occ 库。它需要 conda-forge 来构建。我尝试将其安装在 basic notebook 中 !wget -c https://repo.continuum.io
我将其提交到 Stack Overflow,而不是作为 Tensorflow 问题,因为根据提交到 Tensorflow 的问题(例如 here ),人们能够解决我遇到的问题。我以 Tensorflo
我正在尝试抓取列出法国众贷金融科技网站的研究成果:https://www.orias.fr/web/guest/search 手动执行此操作,我在单选按钮中选择 (IFP),然后它为我提供 13 个结
我使用的是 Point Grey Research BumbleBee 2 相机及其 SDK。我有这个循环来连续抓取帧,但它不起作用。它捕获了第一帧,但 triclopsGetImage() 似乎没有
我知道,我知道,你会告诉我检查我的路径和注册表。我有,相信我。 我的情况——我们有两个机器运行相同的代码和相同的 web.config 文件。以下是两者的规范。 IIS 7.0,配置为在午夜重置应用程
我一直在努力寻找一些资源,以便为 Android 平台(API 级别 17)上的可访问性研究项目构建键盘记录器 Android 应用程序。 应用程序的界面将是一个简单的“EditText” 字段,用户
我知道如何在笔记本中运行脚本(例如 this post )。现在的问题是如何在 python 中读取 shell 脚本的结果?比如我们有一个echo "hi"命令,或者我们调用一个shell脚本,我们
我想在 colab.research.google.com 中使用 Chrome 的 Selenium Webdriver 进行快速处理。我能够使用 !pip install selenium 安装
我想调用 ESHA Research 营养 REST API。我似乎无法弄清楚如何使用 ESHA REST API 调用多种营养素。到目前为止,我正在调用以下内容,并且只能检索卡路里、蛋白质或其他
错误: ... Caused by: java.lang.ExceptionInInitializerError ... Caused by: java.lang.ClassCastException
我是一名优秀的程序员,十分优秀!