2013-05-28 73 views
0

我想传递一个特点,使用Scala的抽象类,这是我到目前为止有:斯卡拉通性状abtract类

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 
    } 
} 

图:http://www.tinkerpop.com/docs/javadocs/frames/2.0.0/com/tinkerpop/frames/FramedGraph.html

+0

你的问题有点混乱。基于'T'的类型提供的'Base',你想要做什么?你想做什么,你还没有做到,因此请求帮助? – cmbaxter

+0

@cmbaxter在我的抽象类中,我希望我的测试方法返回classOf传递给Base(Member或User)的特征 – Roch

回答

2

看看这是你在找什么(根据您的评论):

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 
} 
+0

感谢您的回答,我不再有任何错误。但是,当我将该类从清单传递到Java库时:tinkerpop.com/docs/javadocs/frames/2.0.0/com/tinkerpop/frames/...,java.lang.Object,java.lang.Class)它会返回一个类型为Any的迭代器,而不是MyTrait类型的迭代器。你知道为什么吗 ? – Roch

+0

你可以发布一个更新的代码示例,显示你调用这个Java库吗? – cmbaxter

+0

我发布了更新的代码示例 – Roch

0

在代码中的泛型类型是多余的。你的同伴对象扩展抽象基类,这可以在自助式注释用于像@ OM-NOM-NOM显示