繁体   English   中英

在Java中创建未定义的方法行为?

[英]Creating undefined method behavior in Java?

我有一个关于棋盘游戏的任务,当我们获得进行中的游戏状态时,通过一种方法建议最佳动作。 我必须用Java来做。

任务中有一条奇怪的指令:如果我们得到的状态无法正常播放,则“此方法的行为未定义”。 (您可以想象这种状态,就像在国际象棋中您在相邻的字段上有两个国王的棋盘一样,这在真正的国际象棋游戏中是不可能发生的。)

问题是:该指令意味着什么? 是否有人已经遇到过相同的问题?

首先,我认为在这种状态下,我应该抛出例如IllegalStateException 但是根据另一条指令,当我得到一个棋盘的状态表示某个球员已经赢得比赛,或者是平局时,我必须抛出IllegalStateException

我已经搜索了未定义行为的定义,但是在这种情况下我不知道如何使用它。 完全可以在Java中创建可与这种情况关联的这种行为吗?

我认为,当问题表明“此行为是未定义的”时,它只是在说他们不会测试该条件,因为无法合理地期望您做任何事情。 实际上,这不是您要完成的任务-只是告诉您不要担心这些情况。

如果上述情况为真,为什么不编写一个“ ImpossibleStateException”并抛出该异常? 您可以编写自己的异常类,这是Java设计的一部分,所以为什么不编写一个异常类并在发生未定义状态时将其抛出。

我不确定上述状态是如何产生的,我可以想象,如果您谈论一种棋盘游戏,也许有人摆弄ram或vm并试图作弊/破解游戏。

同样,如果有人会对程序的每个可能状态进行深入测试,就像游戏允许的每个变量和每个可能的值一样,那么大约98%的情况根本没有意义。

从Oracle文档IllegalStateException:

表示已在非法或不适当的时间调用了方法。 换句话说,对于所请求的操作,Java环境或Java应用程序没有处于适当的状态。

因此,我认为在您的情况下这不是一个好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM