Я пытаюсь создать библиотеку, которая обращается к онлайн-API RESTful. 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 лет, поэтому я изо всех сил пытаюсь найти их.
Или, может быть, я обдумываю это и пытаюсь добиться такого типа безопасности типов в параметрах и значениях моего запроса - это действительно плохая практика (опять же, я не очень опытен) - если это так, я был бы признателен объяснение того, почему это плохая практика.
Спасибо,
- Игорь