在某些语言(例如C#和Objective C)中,您可以创建类扩展。 这意味着您可以在现有类中添加其他方法,而不必扩展该类。 这在Java中可行吗?

===============>>#1 票数:7 已采纳

正如Oli提到的那样,这是不可能的。

值得一提的是,C#中的扩展方法只是一种调用Static方法的奇特方法,因此尽管它看起来像

someobject.MyExtensionMethod();

然后编译器将其转换为

SomeStaticClass.MyExtensionMethod(someobject);

您并没有真正在对象上添加方法

===============>>#2 票数:3

不,不是标准Java。

===============>>#3 票数:1

您可以使用使用编译时编织的AspectJ添加到字节码。

===============>>#4 票数:1

我不知道可以使用哪种语言构造,但是可以使用Decorator模式实现目标。

===============>>#5 票数:0

lombok库可以做到这一点。 有一个称为@ExtensionMethod的注释。

这为您提供了该功能。

参见https://projectlombok.org/features/experimental/ExtensionMethod.html

  ask by aryaxt translate from so

未解决问题?本站智能推荐:

1回复

如何获取某个类的视图,该类扩展了扩展Fragment / activity等的类

我有一个问题吗? 扩展y的x类 和扩展Fragment的y类 我希望能够在x中做一些事情,例如获得具有ID的textview并更改文本。 为此,我必须获得视图,但遇到问题。 我尝试了Super.getView,并且尝试将视图保存在y中并从x访问,但是它不起作用。 为什
2回复

我应该扩展什么类,AcionBar或ActionBarImpl?

我觉得这是一些技巧的基本问题。 我想扩展ActionBar的功能,在查找ActionBar代码后,事实证明ActionBar是一个抽象类,而真正的实例化类是ActionBarImpl。 在Android源代码中广泛使用这种具有抽象和Impl的实现方式。 开发人员站点没有详细介绍,但始
2回复

为Class的私有方法创建类扩展

我创建了一个游戏模型作为一个类。 我查看了有关创建类扩展的问题: 在Objective-C中为类定义私有方法的最佳方法 我所拥有的是一些公共方法 - 这些方法可供其他VC在应用程序中使用。 我还想要一些私有方法,类公共方法可以使用,但不需要对应用程序的其余部分开放。 我认为这可以
1回复

xCode6 iOS8如何为现有类创建带有扩展名的文件?

如果我没记错的话,在xCode 5和更低版本中,项目导航器的“新建文件”选项包括一个模板,用于为现有类创建扩展。 此选项位于“可可接触类”旁边,并允许输入基本类名称。 生成的文件的格式类似于“ NSString + JSON.h” 如何在xCode 6中创建类扩展? 我是否先从类文件
1回复

什么时候使用类扩展在.m文件中创建初始化方法?

我正在阅读Apple的一个教程(你的第二个iOS应用程序)。 基本上,您有一个主数据类和一个数据控制器类。 Controller类通过创建一个包含它们的数组来操作主数据对象。 突然间,这会弹出: “...但是”创建主集合“任务是一项只有数据控制器对象需要知道的任务。因为这个方法不
4回复

类扩展与类类别

类扩展@interface Class ()功能更强大,可以将变量注入类中。 类别@interface Class (Category)不能。 还有什么其他差异,何时应该在类扩展中使用类别?
1回复

ivars vs类扩展

假设以下所有代码都写在实现文件中,有人可以解释一下两者之间的区别: 我的看法是,第一个在类扩展中声明一个属性变量。 第二个在类扩展中声明一个实例变量。 第三个声明了一个不是类扩展的实例变量……这意味着什么? 与在类扩展中简单声明一个ivar相比,它有何不同?
1回复

简单类扩展/继承澄清

我已经写了几年Objective-C,并决定回去学习一些基础知识,以帮助我编写更好的代码。 我试图学习有关实例变量,继承和类扩展的所有知识。 我一直在阅读所有这三个内容,但有一件事情令我困惑。 我有一个简单的应用程序,其中包含2个类:Person,Male(来自Person的继承),当然还
2回复

Swift和使用类扩展

我不明白为什么程序员在类实现中使用extension关键字。 您可以在其他主题中阅读到,然后代码在语义上会更加分离,等等。但是当我使用自己的代码时,使用// MARK - Something对我来说更清晰。 然后,当您在Xcode中使用方法列表(ctrl + 6)时,一切都是乍看之下的。
5回复

Objective-C类扩展

作为一个相当新的Objective-C程序员(具有4年的Java经验),我似乎很难理解何时使用类扩展。 根据我的理解(如果我错了,请纠正我),类别和扩展之间的主要区别在于扩展希望您在主实现内实现方法,而对于类别,则可以在另一实现内实现。 人们似乎也主要将扩展用于私有方法。 这是我的第一