Я реализую класс перечислимую, который я буду использовать, чтобы получить какой-то опыт в применении, текущую реализацию этого класса здесь:Java перечисление класса
public enum Painters{
/**
* Available painters.
*/
Background(getBackgroundPainter()),
InactiveBackground(getInactiveBackgroundPainter()),
DesktopBackground(getBackgroundPainter());
/**
* The background painter.
*/
private Painter<Component> _painter;
/**
* Constructor will initialize the object.
*/
Painters(Painter<Component> painter){
_painter = painter;
}
/**
* Will return a current painter.
* @return instance of Painter<Component>
*/
public Painter<Component> painter(){
return _painter;
}
private static Painter<Component> getBackgroundPainter(){
MattePainter mp = new MattePainter(Colors.White.alpha(1f));
PinstripePainter pp = new PinstripePainter(Colors.Gray.alpha(0.2f),45d);
return (new CompoundPainter<Component>(mp, pp));
}
private static Painter<Component> getInactiveBackgroundPainter(){
MattePainter mp = new MattePainter(Colors.White.alpha(1f));
GlossPainter gp = new GlossPainter(Colors.Gray.alpha(0.1f), GlossPainter.GlossPosition.BOTTOM);
PinstripePainter pp = new PinstripePainter(Colors.Gray.alpha(0.2f), 45d);
return (new CompoundPainter<Component>(mp, pp, gp));
}
}
Моя проблема заключается в том, что мне нужно позвонить художнику() каждый раз, когда я пытаюсь получить художника, но я предпочитаю просто писать тип художника. Я думал, что если я смогу продлить Painter по моему перечислению, то, вероятно, я получу нужную функциональность, но похоже, что это невозможно в java.
public enum Painters extends Painter<Component>
Знаете ли вы какое-либо решение проблемы? ???
В настоящее время я использую его следующим образом:
Painters.Background.painter();
, но мне нужно:
Painters.Background;
Я думаю, вы выбрали неправильный ответ как «правильный». –
На самом деле мой художник уже интерфейс, который я смутил, потому что он был без меня вначале (художник в моем случае - художник Swingx). Я считаю, что ответ прав в любом случае, потому что класс enum позволяет реализовать интерфейс, и это единственный способ реализовать то, что мне нужно. – AlexTheo
Я сделал это с завода раньше, но я решил, что класс enum будет более элегантным решением. – AlexTheo