有没有办法动态实现特征/接口

时间:2014-03-10 14:45:14

标签: java scala

我在scala中部分重写了一个java项目。对于项目中的持久层,我有一组实体定义为具体实现的接口。我用squeryl重写持久层。我正在尝试建立最有效的方法来在调用遗留代码时桥接这些类型,遗留代码将引用这些接口。所以我在遗留的java代码中说了以下接口:

public interface Author
{
  public void setName(String name);
  public String getName();
  // etc
}

void someLegacyFunc(Author author) // ...

然后在我的新scala代码中,我会得到以下squeryl对象

class Author (
  val name: String;
  // etc ...
)

我知道我可以将这两者联系起来:

class AuthorBridge(author: Author) implemenets legacy.Author {

  public void setName(String: name) = author.name = name
  public String getName() = author.name
  // etc.
}

然而,它是一个非常大的库,我想避免必要时定义一组全新的桥对象。我想知道scala反射是否可以提供一些更动态的方法来执行以下操作:

object Bridge {

  def get[Legacy, Entity](entity: Entity): Legacy {

  // builds an anonymous implementation of Legacy 
  // binding all the getter/setter methods to the entity's attributes

  }

}

val legacyAuthor = getAuthor(author)

由于 DES

0 个答案:

没有答案