有没有办法从 Scala 实例中删除 Trait?

发布于 2024-12-01 00:17:04 字数 57 浏览 2 评论 0原文

我想知道是否有一个在运行时添加了特征的实例,是否可以从该实例中删除该特征,以便它可以像原来一样运行。

I would like to know if having an instance to which a trait has been added to in runtime, it is possible to remove the trait off the instance, so it can behave as originally.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

臻嫒无言 2024-12-08 00:17:04

特征在编译时与类结合。因此不可能在运行时添加/删除特征。

对于您的特定情况,请考虑向您的类添加一个方法:

class Foo(val a: Object, val b: Object, ...) {
  def original() = new Foo(a, b, ...)
}

然后您可以调用 instance.original() 来获取不受任何特征影响的对象的副本。

Traits are combined with classes at compile-time. So it is not possible to add/remove traits at run-time.

For your particular case, consider adding a method to your class:

class Foo(val a: Object, val b: Object, ...) {
  def original() = new Foo(a, b, ...)
}

Then you can call instance.original() to get back a copy of your object that is not affected by any traits.

口干舌燥 2024-12-08 00:17:04

这是不可能的。该实例属于一个类,该特征的代码是该类的一部分。

如果 JVM 支持类似“class+traits”的东西,那么理论上就有可能恢复它。

It is not possible. That instance belongs to a class of which the trait's code is part of.

If JVM supported something like "class+traits", then it would be theoretically possible to revert that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文