2013-05-28 74 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顯示