Java枚举类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java枚举类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1953字,纯文字阅读大概需要3分钟。
内容图文
我正在实现枚举类,该类将用于检索应用程序中的某些背景,
该类的当前实现在这里:
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()方法,但我更喜欢只写画家的类型.我以为如果我可以通过枚举扩展Painter,那么也许我将获得正确的功能,但是看起来在Java中是不可能的.
public enum Painters extends Painter<Component>
您知道此问题的任何解决方案吗???
目前,我以这种方式使用它:
Painters.Background.painter();
但是我需要:
Painters.Background;
解决方法:
您总是可以将painter定义为接口,并让枚举实现它.您将无法使用通用通配符,但是只要这不是一个约束,您就可以按照您想要的方式在代码中引用painter:
interface Painter<T> {
// ...
}
public enum Painters implements Painter<Component> {
Background(getBackgroundPainter()),
InactiveBackground(getInactiveBackgroundPainter()),
DesktopBackground(getBackgroundPainter());
private Painter<Component> _painter;
// ...
}
Painter somePainter = Painters.Background;
您的枚举将有效地代替实际的画家实现.
内容总结
以上是互联网集市为您收集整理的Java枚举类全部内容,希望文章能够帮你解决Java枚举类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。