Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中保留名称的同时扩展类_Java_Android - Fatal编程技术网

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

在java中保留名称的同时扩展类,java,android,Java,Android,是否可以在保留原始名称的同时在java中扩展类?如果现在我可以向该类添加额外的函数,则该类不是由android sdk提供的,而是视图类否,Java中的类不可重新打开。扩展是一个新类 需要注意的是,通过背信弃义,您可能可以添加字节码,但在编译时无法访问它。不,Java中的类是不可重新打开的。扩展是一个新类 需要注意的是,通过背信弃义,您可能可以添加字节码,但在编译时没有任何东西可以访问它。在java中扩展类时,您可以使用新名称创建一个新类。 例: 扩展类不会被修改。在java中扩展类时,可以通过

是否可以在保留原始名称的同时在java中扩展类?如果现在我可以向该类添加额外的函数,则该类不是由android sdk提供的,而是视图类

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


需要注意的是,通过背信弃义,您可能可以添加字节码,但在编译时无法访问它。

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


需要注意的是,通过背信弃义,您可能可以添加字节码,但在编译时没有任何东西可以访问它。

在java中扩展类时,您可以使用新名称创建一个新类。 例:


扩展类不会被修改。

在java中扩展类时,可以通过使用新名称创建新类来实现。 例:


扩展类未被修改。

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

package com.me;

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

只有在不同的包中才能执行此操作。也就是说,它可以有相同的简单名称,但不能有相同的限定名称

package com.me;

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

我假定您指的是完全限定名FQN=包+类名。所以,不,你不能,你真的不应该。这就是首先要有一个包名的意义所在


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

我猜您指的是完全限定名FQN=包+类名。所以,不,你不能,你真的不应该。这就是首先要有一个包名的意义所在


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

同意。Java中没有任何东西类似于Objective-C类别。@MikeG似乎不同意。无论哪种方式,都取决于何时以及如何添加它。就像我说的,在编译时无论如何都不可用。同意。Java中没有任何东西类似于Objective-C类别。@MikeG似乎不同意。无论哪种方式,都取决于何时以及如何添加它。就像我说的,在编译时是不可用的。这是不可能的,但是,如果你能在更高的层次上描述你想做什么,那么也许有人可以为你试图完成的事情推荐一种替代方法。@goto10例如,我想在android中为View类添加一个函数,但我不想扩展它并使用新的类名。我非常理解。但是你能用更笼统的术语来描述你的目标吗?我希望所有视图都是紫色的。我希望所有视图在我点击时弹出一个消息框,上面写着“嗨”。您想要的特定技术解决方案是不可能的,但可能有另一种方法来实现您的目标。@goto10我想在视图类中编辑dispatchTouchEvent函数,以便记录事件,然后将其传递给处理。我不想扩展类的原因是因为我有很多活动,而将所有视图类更改为新的扩展类是没有意义的。您可能有多个活动这一事实不应该成为执行此操作的障碍。您需要对它们进行的唯一更改是在每个扩展的顶部添加扩展。大多数Android应用程序的活动不超过10-15项,但即使是100项活动,也只需要几分钟。这是不可能的,但是,如果你能在更高的层次上描述你想做什么,那么也许有人可以为你试图完成的事情推荐一种替代方法。@goto10例如,我想在android中为View类添加一个函数,但我不想扩展它并使用新的类名。我非常理解。但是你能用更笼统的术语来描述你的目标吗?我希望所有视图都是紫色的。我希望所有视图在我点击时弹出一个消息框,上面写着“嗨”。您想要的具体技术解决方案是不可能的,但可能有另一种方法来实现您的目标。@goto10我想尝试一下
它在view类中调用dispatchTouchEvent函数,以便记录事件,然后将其传递给处理。我不想扩展类的原因是因为我有很多活动,而将所有视图类更改为新的扩展类是没有意义的。您可能有多个活动这一事实不应该成为执行此操作的障碍。您需要对它们进行的唯一更改是在每个扩展的顶部添加扩展。大多数Android应用程序的活动不超过10-15项,但即使是100项活动,也只需要几分钟。谢谢。我花了一个小时解决了一个完全无关的问题,这个答案让我走上了正确的轨道。谢谢你。我花了一个小时解决了一个完全无关的问题,这个答案让我走上了正确的轨道。