我经常发现我想要做这样的事情:爪哇 - 替代迫使子类有一个静态方法
class Foo{
public static abstract String getParam();
}
要强制美孚的一个子类返回的参数。
我知道你不能做到这一点,我知道你为什么不能做到这一点,但共同的选择:
class Foo{
public abstract String getParam();
}
是不能令人满意的,因为它需要你有一个实例,它是不是有益的,如果你只想知道参数的值,并且实例化类是很昂贵的。
我很想知道人们如何避免使用“恒定接口”反模式。
编辑:我会添加一些更详细的关于我的具体问题,但是这仅仅是当我想要做这样的事情有几个人从过去的当前时间。
我的子类是所有数据处理器和超类定义它们之间的通用代码,使它们能够获取数据,分析它,并把它放在它需要去。 每个处理器都需要一些保存在SQL数据库中的参数。每个处理器应能够提供它需要的参数列表和默认值,以便通过检查每个处理器类型的必需参数来验证配置数据库或将其初始化为默认值。 让它在处理器的构造函数中执行是不可接受的,因为每个类只需要为每个对象实例一次而不是每个对象实例一次,并且应该在系统启动时完成,否则每个类的实例可能还不需要。
如果您已经调用了'Class.getName()',那么为什么还需要获取名称? – 2012-08-13 16:34:17
这是一个例子。我可以说得到gigawidgets – 2012-08-13 16:39:07
有趣的问题。你有一个方便的具体例子吗?这可能有助于挑起一些想法。斯卡拉有一个很好的方式来处理这个问题 - 它是一个对象和一个类的区别 - 可能不会帮助你很多。 – jeff 2012-08-13 17:05:17