В Java я хотел бы иметь возможность определять интерфейсы маркеров, которые принудительно реализуют статические методы. Например, для простого текста сериализации/десериализации Я хотел бы быть в состоянии определить интерфейс, который выглядел примерно так:Альтернативы статическим методам на интерфейсах для обеспечения согласованности
public interface TextTransformable<T>{
public static T fromText(String text);
public String toText();
Поскольку интерфейсы в Java не может содержать статические методы, хотя (как отмечено в ряд других сообщений/потоков: here, here и here этот код не работает
То, что я ищу, однако, некоторые разумные парадигмы, чтобы выразить то же самое намерение, а именно симметричные методы, один из которых является статическим. , и применяется компилятором. В настоящее время лучшее, что мы можем придумать, - это какой-то статический заводский объект или универсальный завод, ни один из которых не является действительно удовлетворительным Тори.
Примечание: в нашем случае наш основной прецедент - у нас есть много, много типов «значение-объект» - перечисления или другие объекты, которые имеют ограниченное число значений, как правило, не имеют состояния за пределами их значения, а какие мы анализируем/удаляем тысячи раз в секунду, поэтому на самом деле заботимся о повторном использовании экземпляров (например, Float, Integer и т. д.) и его влиянии на потребление памяти/gc
Любые мысли?
EDIT1: Чтобы прояснить некоторую путаницу, - у нас есть много, разных объектов, посаженных эта модель -really мы пытаемся придумать нечто элегантное звонящие с 2 семантикой:
- Интерфейсов как контракты - единство доступа (например, TextTransformable как возможность)
- Требуя реализации подклассы/реализации (например, заставить их выполнять свои собственные преобразования
в тер мс наших мыслей о Flyweight, Factories - они оба варианта, которые мы рассмотрели, действительно мы пытаемся понять, можем ли мы найти что-то более элегантное, чем полагаться на JavaDoc, говорящий «реализовать вызовы Factory и делегировать на него или выставить его в положение XXX по соглашению «
Да, я отредактирую выше с запиской о том, что мы говорили о мухи - действительно, хотя я думаю, что мы сосредоточены на единство доступа (например, интерфейс маркера и принудительный контракт по подклассу) - ни один из которых не имеет фабричного или статического трансформатора) Основная причина, по которой я думаю, что мы недовольны фабричной идеей чувствует себя неэлегантным, хотя, по общему признанию, иногда мы терпим неэлегантность, когда мы не можем придумать что-то элегантное ... – jayshao
Да, ироническое ограничение - это то, что мы хотим;) Идеально больше вникания, но без использования соавтора объект - хотя я согласен, ваше резюме похоже на наше текущее мышление и, вероятно, так хорошо, как мы сможем сейчас придумать. – jayshao