所以我知道有關重寫「的toString」看你想要的,而不是類型是什麼東西,但在我的情況下,總的情況是:的toString
Project1:ClassA
使用Project2:ClassB
那裏我包括Project2
分成Project1
類路徑和編譯工作正常。但是,Project2:ClassB.toString()
打印project2.package.classC
而不是classB的classC元素。
請注意,一旦我將classB複製到project1中,打印工作正常,我會看到這些元素。
這裏是CLASSB從項目2快照,我使用我目前PROJECT1:
package edu.cs;
public class FeatureWeightArrayWritable implements Writable {//classB
public int vectorSize;
public FeatureWeight[] vector; //classC = FeatureWeight
@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < this.vectorSize; i++)
buffer.append(vector[i].feature + " " + vector[i].weight);
// return buffer.toString();
return "Can't see this !!! I see [email protected] ";
}
}
如果你是可疑FeatureWeight
類,我也重寫其toString,但它不應該是即使我使用了上面的返回消息也是如此。任何線索?
這是我如何讀它:
Reader reader = new SequenceFile.Reader(fs, inputPath, conf);
Writable key = (Writable) reader.getKeyClass().newInstance();
FeatureWeightArrayWritable value = new FeatureWeightArrayWritable();
while (reader.next(key, value))
System.out.println("key:" + key.toString() + ", value:" + value.toString());
「toString()'被調用的代碼在哪裏? – 2012-08-02 23:13:17
[email protected]看起來完全像toString()的默認實現。考慮到它打印edu.cs.FeatureWeight而不是edu.cs.FeatureWeightArrayWritable @ ?????我會說你不是在正確的對象上調用它。您是否正在使用(投射到)FeatureWeight類的某處? 你得到的實際輸出是多少?什麼是它的代碼? – 2012-08-02 23:17:22
你確定你正在打印正確的東西嗎? – oldrinb 2012-08-02 23:21:54