相关疑难解决方法(0)

动态混合特征

有特点

trait Persisted {
  def id: Long
}
Run Code Online (Sandbox Code Playgroud)

如何实现一个接受任何case类实例的方法并返回其特征混合的副本?

该方法的签名如下:

def toPersisted[T](instance: T, id: Long): T with Persisted
Run Code Online (Sandbox Code Playgroud)

scala traits mixins case-class

38
推荐指数
2
解决办法
1万
查看次数

如何在scala中的泛型方法中创建特征实例?

我正在尝试使用此方法创建特征实例

val inst = new Object with MyTrait
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想把这个创作转移到生成器函数,即.

object Creator {
  def create[T] : T = new Object with T
}
Run Code Online (Sandbox Code Playgroud)

我显然需要清单以某种方式修复类型擦除问题,但在此之前,我遇到了两个问题:

  1. 即使有一个隐含的清单,Scala仍然要求T是一个特征.如何添加限制来创建[T]以使T成为特征?

  2. 如果我选择使用Class.newInstance方法动态创建实例而不是使用"new",我如何在"new object with T"中指定"with"?是否可以在运行时动态创建新的具体mixin类型?

scala instance traits new-operator

8
推荐指数
2
解决办法
6764
查看次数

Groovy Mixin on Instance(Dynamic Mixin)

我正在努力实现以下目标:

class A {
  def foo() { "foo" }
}

class B {
  def bar() { "bar" }
}

A.mixin B
def a = new A()

a.foo() + a.bar()
Run Code Online (Sandbox Code Playgroud)

有一个显着的区别 - 我想在实例上做mixin:

a.mixin B
Run Code Online (Sandbox Code Playgroud)

但这会导致

groovy.lang.MissingMethodException: No signature of method: A.mixin() is applicable for argument types: (java.lang.Class) values: [class B]
Run Code Online (Sandbox Code Playgroud)

有没有办法像Groovy Mixins JSR中提出的那样工作?

groovy dynamic instance mixins

6
推荐指数
1
解决办法
2113
查看次数

标签 统计

instance ×2

mixins ×2

scala ×2

traits ×2

case-class ×1

dynamic ×1

groovy ×1

new-operator ×1