我们可以在java.lang.Object中添加额外的方法吗?

时间:2013-12-10 10:16:51

标签: java object lang

我们在java.lang.Object中定义了一组方法。每个班级都会自动扩展这个班级。

如何在java.lang.Object类中添加方法?

4 个答案:

答案 0 :(得分:2)

否(仅通过修改rt.jar或bootclasspath),当你可以编写自己的类时,为什么要这样做 - 根据定义 - extends Object

如果出现“需要”将方法添加到现有类(特别是JRE库中的某些内容),这通常表明您的设计/对象模型不合理。告诉我们您为什么要这样做,我们可以更好地帮助您。

我从另一个答案的评论中理解,您想要打印有关“未知”对象的信息。这正是toString()的用途。如果在自己的类上覆盖该方法,则可以精确控制输出,而不是通常的name@hash。这当然是假设您不是只将任何投入到相关方法中,而只是控制的类......

干杯,

答案 1 :(得分:2)

正如其他人所指出的那样:如果避免更改原始代码,问题的答案是“否”......

我不知道您的应用程序,但如果您想添加“Aspects”,您可能需要查看AspectJ:http://en.wikipedia.org/wiki/AspectJ

答案 2 :(得分:2)

技术上你可以,但有很多问题。

  • 它违反了您对Oracle JDK的许可协议,可能是其他人。
  • 您必须将新版本添加到bootclasspathendorsed目录的开头,这很痛苦。
  • 您只能在JVM崩溃之前添加几个方法。它对Object类和其他一些常用类做了一些假设。

我只会出于调查目的这样做,而不是在生产中使用它。

答案 3 :(得分:0)

不!您无法在java.lang.Object课程中添加自定义函数。