最近我在某人的代码中看到他在接口 ex 中实现了他的最终类变量字段:
public interface commentSchema{
static final String DB_TABLE_NAME = "comment";
...
}
&他已经实现了一个确实需要这些变量的类,如下所示:
public class DbComment implements commentSchema {
// use the DB_TABLE_NAME value here ...
...
}
如您所知,如果有人因为继承方面而创建了 DbComment 类的实例,他将能够访问不正确的 DB_TABLE_NAME,因为我们只想在 DbComment 方法中使用这些值。
现在我有几个问题:
1)这个实现是否正确&ok?
2)如果不是,我们必须如何在 DbComment 类之外声明这些变量并使该类成为唯一看到这些值的类。(我们不想使用抽象类,因为一个类只能在 java 中扩展另一个类)
3)为什么我们需要对存在于接口中的值和方法使用静态?(当我们为特定类实现特定接口时,为什么我们需要将其设为静态以便随处可见?)
4) 是否有任何规范可以准确确定 java 方法、类、枚举等的不同声明种类?