2013-09-25 69 views
0

我有下面的代碼的類,傳遞值從一類到另一個調用類

public class DocTransformer implements Callable<IndexableDocument> { 

    WDoc document; 
    public DocTransformer(Map<INDEXFIELD, Tokenizer> tknizerMap, WDoc doc) { 
     this.document = doc; 
    } 

    public IndexableDocument call() throws TokenizerException { 
     System.out.println("Inside doctrans: "+this.document.getId()); 

    } 

} 

的IndexableDocument類似於下,

public class IndexableDocument { 

    WDoc doc; 
    public IndexableDocument() { 
     System.out.println("this is inside indexable document"); 
    } 

    public void addField(INDEXFIELD field, TStream stream) { 
     //TODO: Implement this method 
    } 

    public TokenStream getStream(INDEXFIELD key) { 
     //TODO: Implement this method 
     return null; 
    } 

    public String getDocumentIdentifier() { 
     System.out.println(doc.getId); 
    } 

} 

一個亞軍類調用DocTransformer。我可以在DocTransformer中訪問WDoc,因爲它是從runner類調用的,並且該對象從它傳遞給DocTransformer。但是我需要訪問IndexableDocument中的WDoc對象。如何實現它?請解釋我的問題是否需要改寫,因爲我對線程很陌生。

+1

難道你不能只爲'WDoc doc'字段添加一個getter嗎? –

回答

0

您可以爲此WDOC使用Exchanger創建一個getter和setter,並且不要忘記讓WDOC最終。

Exchanger<WDoc> exchanger = new Exchanger<WDoc>(); \\do it inside some Cover Thread(mb your main class) 
currentWdoc = exchanger.exchange(doc); \\ inside getter 

如果您僅限WDOC讀取。你可以使用getter和final字段

相關問題