Class Scala将特征传递给abtract类
我想使用scala将一个trait传递给一个抽象类,这是我到目前为止所做的:Class Scala将特征传递给abtract类,class,scala,abstract-class,Class,Scala,Abstract Class,我想使用scala将一个trait传递给一个抽象类,这是我到目前为止所做的: trait User extends VertexFrame {} trait Member extends VertexFrame {} object Member extends Base[Member] {} object User extends Base[User] {} abstract class Base[T <: VertexFrame: Manifest] { // Here if
trait User extends VertexFrame {}
trait Member extends VertexFrame {}
object Member extends Base[Member] {}
object User extends Base[User] {}
abstract class Base[T <: VertexFrame: Manifest] {
// Here if want to be able to access my "trait User" or my "trait Member"
def list = {
graph.frameVertices(graph.getVertices, manifest[T].runtimeClass).toList
}
}
trait User扩展VertexFrame{}
trait成员扩展了VertexFrame{}
对象成员扩展基[Member]{}
对象用户扩展基[User]{}
抽象类基类[T在您的代码中泛型类型是冗余的。您的同伴对象扩展了抽象基类,这可以用于自类型注释,如@om nom nom所示查看这是否是您要查找的(基于您的注释):
抽象类基[T]
//如果您想访问我的“trait用户”或我的“trait成员”
def test=manifest[T]。运行时类
}
你的问题有点让人困惑。基于所提供的T
类型,你到底想在Base
中做什么?你想做什么,但你还不能做,因此请求帮助?@cmbaxter在我的抽象类中,我希望我的测试方法返回传递给的特征的类基本(成员或用户)谢谢你的回答,我再也没有收到任何错误了。但是,当我将从清单中获取的类传递到Java库:tinkerpop.com/docs/javadocs/frames/2.0.0/com/tinkerpop/frames/…,Java.lang.Object,Java.lang.class)时,它会返回any类型的iterable,而不是MyTrait类型的iterable。你知道为什么吗?你能发布一个upd吗显示您调用此Java库的最新代码示例?这很难看,但您可以包括这样的强制转换manifest[T].runtimeClass.asInstanceOf[Class[T]
,这可能会解决您的问题。在此之前,返回了一个Class[\u]
。强制转换使其成为Class[T]
将其传递到您正在调用的java代码中时应该可以使用。使用scala 2.10反射可能有更好的方法,但这也应该可以使用。
abstract class Base[T <: VertexFrame: Manifest] { self =>
// Here if want to be able to access my "trait User" or my "trait Member"
def test = manifest[T].runtimeClass
}