是否有可能在保留原始名称的同时在java中扩展类?如果现在我可以添加到该类的额外功能(注意这个类是由android sdk提供的,它的视图类)扩展类,同时保留在java中的名称
回答
不,Java中的类不是“可重新打开的”。扩展是一个新类。
(一个警告,通过背叛你也许可以添加字节码,但没有将能够在编译时访问它。)
同意。 Java中没有类似于Objective-C“类别”的东西。 –
在Android上添加字节码是不可能的 –
@MikeG [This](http://groups.google.com/group/android-platform/browse_thread/thread/21549d6f3228eb50?pli=1)似乎不同意。无论哪种方式,它取决于何时以及如何添加它。就像我所说 - 无论如何不会在编译时提供。 –
当你扩展中的Java类,您可以通过创建这样做一个新名字的新班级。 ex:
public class MySpecialView extends View
扩展类未被修改。
只有当它位于不同的包中时,才可以这样做。 (也就是说,它可以有相同的简单的名字,但不是同一个合格的名称。)
package com.me;
class Number extends java.lang.Number {
// ...
}
谢谢你。刚花了一个小时解决了一个完全无关的问题,这个答案让我走上了正确的轨道。 – velis
我假定你的意思是完全合格的名称(FQN =包+类名)。所以,不,你不能,而你真的不应该。这就是首先要有一个包名称。
但是,如果您坚持这样做,您可以使用相同的包和相同的名称创建一个新的类,从原始源代码开始(假设您拥有它)并更改您需要的任何功能。根据类路径顺序(通常您的源代码优先于任何包含的库,但您必须确保它是如此),类加载器将选择您的类而不是原来的类。但这更像是一种黑客行为,我强烈建议避免它,除非您确切知道自己在做什么,因为您可能会遇到各种意想不到的行为。
- 1. 重命名文件,同时保留java中的文件扩展名
- 2. 重命名多个文件,同时在linux中保留相同的扩展名
- 3. UrlFilenameViewController在视图名称中保留URL扩展
- 4. .htaccess删除扩展名,同时保留uri参数
- 5. 在构造函数中保存扩展类的'方法'名称
- 6. 从扩展类中获取类名称
- 7. java gzip无法保留原文件的扩展名
- 8. 我应该在自己的“扩展”文件中保留扩展名吗?
- 9. 在保留角的同时伸展UIImage
- 10. 如何删除文件扩展名以显示,但保留href的扩展名?
- 11. 扩展保留属性
- 12. 保留网址扩展
- 13. PrestaShop:在上传产品定制(或至少是扩展名)时保留文件名和扩展名
- 14. foreach:保留名称
- 15. 扩展类在Java中
- 16. Java泛型名称冲突扩展
- 17. 如何在保持列名顺序的同时扩展tidyr :: spread()?
- 18. JRuby:扩展具有相同名称的两种方法的Java类
- 19. 是否有可能扩展一个具有相同名称的Java类
- 20. jpype访问Java mehtod /变量的名称是保留名称在Python中
- 21. Python:如何在使用os重命名文件时保留文件扩展名?
- 22. 函数来改变不同扩展类型的名称文件
- 23. 扩展Java类
- 24. 扩展Java类
- 25. 在prototypejs中扩展名称空间
- 26. 在Rails中,“名称”是保留字吗?
- 27. Java:在运行时扩展类
- 28. 可以扩展java中的主类并且文件名由子类保存吗?
- 29. 的Java扩展类类型
- 30. 正则表达式的扩展分裂,但保留扩展
这是不可能的,但也许如果你可以描述你想要在更高的层次上做什么,那么有人可以建议一个替代方法来完成你想要完成的任务。 – goto10
@ goto10例如我想添加一个函数到View类的android,但我不想扩展它,并使用新的类名。 –
我很了解。但是,你能用更一般的术语来描述你的目标吗? “我希望所有的观点都是紫色的。” “我希望所有的视图弹出一个消息框,当我点击它们时,会显示'嗨'。”你想要的具体技术解决方案是不可能的,但可能有另一种方法来实现你的目标。 – goto10