在java中保留名称的同时扩展类

时间:2011-11-23 18:08:45

标签: java android

是否可以在保留原始名称的同时扩展java中的类?如果现在我可以添加该类额外的功能(注意这个类是由android sdk提供的,它的视图类)

4 个答案:

答案 0 :(得分:4)

不,Java中的类不是“可重新打开”的。扩展是一个新类。

(有一点需要注意,通过背叛你可能会添加字节码,但在编译时什么都无法访问它。)

答案 1 :(得分:3)

只有当它位于不同的包中时才能执行此操作。 (也就是说,它可以具有相同的简单名称,但不具有相同的限定名称。)

package com.me;

class Number extends java.lang.Number {
    // ...
}

答案 2 :(得分:0)

在java中扩展类时,可以通过创建具有新名称的新类来实现。 例如:

public class MySpecialView extends View

不修改扩展类。

答案 3 :(得分:0)

我假设您的意思是完全限定名称(FQN =包+类名)。所以,不,你不能,你真的不应该。这就是首先拥有包装名称的重点。

但是,如果您坚持这样做,您可以创建一个具有相同包和相同名称的新类,从原始源代码开始(假设您拥有它),并更改您需要的任何功能。根据类路径顺序(通常您的源代码优先于任何包含的库,但您必须确保它是这样),类加载器将选择您的类而不是原始类。但这更像是一个黑客,我强烈建议避免它,除非你确切知道你在做什么,因为你最终可能会遇到各种各样的意外行为。