【发布时间】:2011-12-30 15:46:14
【问题描述】:
我正在尝试创建一个访问在线 RESTful API 的库。 API 定义了一个已实现方法的列表,并为每个方法定义了允许的参数,以及(在某些情况下)给定参数的允许值。我在想我想确保(A)只能调用已实现的方法; (B) 只能为给定方法定义允许的参数; (C) 如果给定参数只允许某些值,则只允许这些值。
(A) 仅使用枚举“方法”就相对容易:
public enum Method {
getObjectById,
getObjectBySearch,
...
}
对于 (B) 我在想 Method 的每个实例都需要有自己的允许参数枚举,对于 (C) 一些参数,允许值的枚举,有点像(如果这让任何人感到抱歉,我很抱歉畏缩):
注意:以下代码不是有效的 JAVA;此处仅作为概念示例。
public enum Method {
getObjectById () {
enum Parameter {
objectId;
},
getObjectBySearch () {
enum Parameter {
query,
queryType () {
enum Type { type1, type2 }
}
}
}
}
显然,Java 中不允许本地枚举,因此无法做到这一点;我想有更优雅的方法可以实现我的最终目标,但我已经 5 年多没有实践了,所以我很难找到它们。
或者我可能想多了,并试图在我的请求的参数和值中实现这种类型安全是非常糟糕的做法(同样我不是很有经验) - 如果是这种情况,我将不胜感激解释为什么这是不好的做法。
谢谢,
- 伊戈尔
【问题讨论】:
-
你是在客户端还是服务器端限制方法和参数类型?