我可以在java中更改编译器设置的默认超类吗?

时间:2012-05-04 12:03:25

标签: java

每个java类的根类都是Object类。我能改变自己班级class MyObject extends Object的班级和地点吗?它有更多的功能。

这件事有可能???

4 个答案:

答案 0 :(得分:5)

不,这是不可能的。它甚至不是编译器问题。 java.lang.Object作为继承层次结构的根是语言定义甚至VM规范的一个非常基本的事实。

答案 1 :(得分:3)

不,这是不可能的。 Java中的所有对象都必须来自java.lang.Object

如果您想为系统中的每个对象添加功能,那么我将介绍您自己的MyObject类,并确保您的所有类都来自此类。如果要将功能扩展到现有对象,那么我将使用静态帮助器方法来执行此操作(在C#中,您使用扩展方法,但Java中不存在此类选项)。

答案 2 :(得分:3)

我从来没有听说过这样的事情。你为什么想要?除了你之外,任何人都无法遵循你的代码。每个Java程序员都假设您明确地扩展了一个类,或者扩展了Object。

在课程开始时加入“扩展MyObject”真的需要做多少工作?我很确定可以将Eclipse(和其他IDE)配置为自动为您插入它。

答案 3 :(得分:1)

除此之外,这对我来说似乎是一个值得怀疑的方法 -
您可以使用bytecode instrumentation对此进行归档 (但这不是在编译时完成的,而是在vminit / classload时间 - 取决于所使用的工具类型)。