【发布时间】:2013-10-01 07:26:11
【问题描述】:
假设我有一个只包含静态方法和变量的实用程序类。例如:
public abstract final class StringUtils
{
public static final String NEW_LINE = System.getProperty("line.separator");
public static boolean isNotNullOrSpace(final String string)
{
return !(string == null || string.length() < 1 || string.trim().length() < 1);
}
}
在这种情况下,将类设为抽象类和最终类是有意义的。抽象,因为创建此类的对象将毫无用处,因为所有方法都可以静态访问。最终,因为派生类不能从此类继承任何东西,因为它没有任何非静态成员。
C# 允许对此类类进行 static 修饰符。为什么 Java 不支持这个?
【问题讨论】:
-
因为语言规范不同??然后是
true。 -
谢谢巴特。您提供了正确的答案。我可以有一个带有私有构造函数的最终类。
-
您已经混淆了
final的含义;final相当于 C# 的sealed,而不是static。 -
public final abstract class ChuckNorris extends ChuckNorris {}
标签: c# java static abstract-class final