匿名内部类和Final修饰符[重复]

匿名内部类和Final修饰符[重复],第1张

匿名内部类和Final修饰符[重复]

显式 是在源代码中写的东西。因此,如果将某些东西声明

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源代码的过程中,可以删除或添加一些修饰符。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5020835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存