public final class,则意味着该类是 明确的final 。
隐式 不是在源代码中写下的,而是在某种构造的上下文中或基于语言规则的情况下,元素的行为与使用指定修饰符声明的行为相同。
例如,
enum声明中的关键字
enum SomeEnum {}导致
SomeEnum为
final,因为语言规则对其进行了规定。其效果与关键字的效果相同
final。
匿名类隐式最终的示例是因为不存在任何语言构造可覆盖匿名类。因此,它的行为就像是
final。我认为“有效”一词在这里更好。
但是,您不能基于反射呈现事物的方式做出假设。考虑以下代码段:
public class Test { interface SomeInterface { } abstract interface SomeAbstractInterface { } static abstract class SomeAbstractClass { } enum SomeEnum { } public static void main(String arg[]) { System.out.println(Modifier.toString(SomeInterface.class.getModifiers())); System.out.println(Modifier.toString(SomeAbstractInterface.class.getModifiers())); System.out.println(Modifier.toString(SomeAbstractClass.class.getModifiers())); System.out.println(Modifier.toString(SomeEnum.class.getModifiers())); }}
结果是这样的:
abstract static interfaceabstract static interfaceabstract staticstatic final
无论
interface与
abstractinterface被认为是一个抽象接口。通过反射它们也被认为是静态的。显然,在解析和编译Java源代码的过程中,可以删除或添加一些修饰符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)