JAVA中Method类为final,其设计为什么不让继承!
发布网友
发布时间:2022-04-30 04:22
我来回答
共1个回答
热心网友
时间:2023-10-12 07:21
不仅仅Method,其它的Constructor、Parameter、Field都是final的。
1. 类在运行期是缓存的,如果不用final保护,被改动了怎么办?Method对象和class文件不一致了。
2. Method类依赖Class类,如果要改Method,就要动类加载。Class是很底层的类,基本都是native方法,用户自己有没有这个能力改动?
3.从逻辑上将,Method已经完成了所有的工作,没有派生关系,也没有继承的必要性。
jdk的反射机制已经很完善了,整个体系不需要用户去动,一般也没这个能力。一般要扩展也只需要一些工具类就足够满足需求。
热心网友
时间:2023-10-12 07:21
不仅仅Method,其它的Constructor、Parameter、Field都是final的。
1. 类在运行期是缓存的,如果不用final保护,被改动了怎么办?Method对象和class文件不一致了。
2. Method类依赖Class类,如果要改Method,就要动类加载。Class是很底层的类,基本都是native方法,用户自己有没有这个能力改动?
3.从逻辑上将,Method已经完成了所有的工作,没有派生关系,也没有继承的必要性。
jdk的反射机制已经很完善了,整个体系不需要用户去动,一般也没这个能力。一般要扩展也只需要一些工具类就足够满足需求。