是否可以在保留原始名称的同时扩展java中的类?如果现在我可以添加该类额外的功能(注意这个类是由android sdk提供的,它的视图类)
答案 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 =包+类名)。所以,不,你不能,你真的不应该。这就是首先拥有包装名称的重点。
但是,如果您坚持这样做,您可以创建一个具有相同包和相同名称的新类,从原始源代码开始(假设您拥有它),并更改您需要的任何功能。根据类路径顺序(通常您的源代码优先于任何包含的库,但您必须确保它是这样),类加载器将选择您的类而不是原始类。但这更像是一个黑客,我强烈建议避免它,除非你确切知道你在做什么,因为你最终可能会遇到各种各样的意外行为。