2012-09-19 109 views
2

Java中的其他每个类都继承自Object类。构建一个单独的Java类层次结构

是否有可能在我的FastObject类中添加基于Java的第二个完全独立的类层次结构?

我这样做的最初目标是创建更小,更快的对象,并且为特定算法专门设计的功能更少。但让我清楚,我对这是不是一个“好主意”不感兴趣。我只想知道这是否可能;我一直无法找到办法。它需要更改JVM吗?新的引导类路径功能?是真的解决方案忽略Object并看看替换java.lang.Class?使用直接的Java编译器而不是虚拟机会让我的工作更轻松吗?

要清楚,我不只是想编辑根类Object类。这将需要重新编写整个Java库。我不想替换当前的层次结构,我只是想创建一个单独的,我可以在相同的代码中使用。

回答

2

不,这是不可能的。

所有创建的类都可以显式或隐式地扩展另一个类。如果您创建一个类并明确定义它所继承的类,那么它将扩展该类。如果不是,那么它隐含地延伸Object。没有办法解决这个问题,就像无法重载操作员或任何类似的东西一样。这是Java编程语言的基本设计决策。

所有类别延伸Object。唯一不是原始类型的东西。当然,这个例外是Object,它本身没有扩展。

+0

鉴于“所有创建的类扩展了另一个类,无论是显式的还是隐式的”,“Object”扩展了什么?或者是规则的例外情况?不希望成为迂腐,只是好奇 – chrisbunney

+0

@chrisbunney除了对象的显着例外。 – hsanders

+0

哈哈,touche。除了一个以外。 :)虽然我打算将“创建的类”作为“用户创建的,定制的非核心Java类”来实现。 – asteri

1

您可能可以通过使用引导类路径来注入自己的对象实现。但是,我不认为有任何方法可以使用Object以外的基础对象。您可以尝试一些字节码操作,但完全有可能您的修改后的类将被类加载器拒绝。

+1

这相当于“替换当前层次结构”,OP表示他不想这样做。他希望能够同时使用两者。不过这确实很有趣。我可以在业余时间尝试一下,看看它是如何发展的。 :) – asteri

+0

@Jeff - 是的,我意识到我所建议的不完全是OP想要的。我在答复中说了很多。 – jtahlborn