Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class Scala将特征传递给abtract类_Class_Scala_Abstract Class - Fatal编程技术网

Class Scala将特征传递给abtract类

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

我想使用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 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
}