Java需要帮助检查string是否为实例

时间:2011-01-27 19:16:43

标签: java instance

我有一个接口GenericExpression,它被扩展为创建表达式(即AndExpression,OrExpression等)。

每个GenericExpression实现都有一个表示它的字符串(即“&”,“+”等)(存储为静态变量“stringRep”)

有没有办法获取用户输入字符串并检查它是否代表GenericExpression?

如果不是(似乎很可能是这种情况),有没有办法用重构设计达到类似的效果?

谢谢!

编辑:上面提供了更多细节。

此外,最终目标是能够任意实现GenericExpression并仍然检查字符串是否表示其子类之一的实例。因此,我不能只存储一个实现映射 - 字符串表示对,因为它会使得GenericExpression不再容易扩展。

此外,这是家庭作业

1 个答案:

答案 0 :(得分:3)

我认为您需要在某处定义程序支持的表达式。我认为最好的方法是使用map,将接口映射到字符串。这样,您可以使用其表示字符串轻松查找表达式。您将在何处定义此地图取决于您的设计。一种可能性是辅助类中的静态方法,它将表达式解析为如下字符串:

Expressions.get("&").invoke(true, false);

getExpressions上的静态方法,用于在静态地图中查找所需的表达式。您必须在静态初始化程序中初始化此映射,或让表达式实例在创建时添加它们。

修改  (我想在答案上发表评论,但似乎已被删除) 就个人而言,我不喜欢课程注册的想法。它让我感觉不能控制我的代码。我更愿意在Expressions类中实例化类。无论如何,必须为每个新的子类编写注册类的代码。我更喜欢将这个代码集中在一个类中,所以如果我想改变逻辑或重构,我只需触摸一个类。