我的问题是:
- 我有一堆不同的类都扩展了一个基类(
Identifiable
)。 - 我需要为某些子类分配一个特定的值(
securityLevel
),该值应该是可变的并分配给该类的所有成员(即:它应该是static
)。 - 我需要通过共同祖先访问这些类。
- 我该怎么做呢?
首先想到的是有一个专用的interface
( ISecurity
) 定义值或静态方法来访问它们,并让实际的类要么不访问implements
它,如果它们这样做,覆盖static
字段(或检索它的方法)。然而,这是不可能的,原因有两个:
- 当前的 Java 语言不允许s
static
中的成员interface
。 - 即使它允许它也不可能
@Override
。
我怎样才能解决这个问题?我找到的唯一方法是:
- 将非
static
成员 (public Class getValueProvider()
) 添加到基类以检索返回的值null
。 - 在感兴趣的类
@Override
中,非static
方法返回所需值的private static Class getValueProvider()
实现 setter 和 getter 的值。 - 使用检索到的
class
实例来获取请求的值(如果返回为空,则跳过所有内容)。
这非常难看,并且无法在子类中强制执行正确的实现。