2014-01-27 52 views
0

我想從另一個類中包含的一個類中調用方法。但是我不知道要調用的對象名稱,所以我不能使用命令ClassName.objectName.methodName()調用不同類的方法,但不知道對象的名稱

此外,該命令不起作用,因爲.this引用了它自己的類中的對象。

我已經嘗試過很多代碼組合,但都給了我編譯器錯誤。

這是我試圖運行線路:

averageVector[i]=averageVector[i]+(FeatureVector.featureAt(i)); 

FeatureVector是包含對象的類。

如果您需要更多信息,請告訴我。

在此先感謝。

的要求完整代碼:

類名:簇:

public FeatureVector getCentroid(){ 
    int numberOfVectors; 
    double [] averageVector; 
    numberOfVectors=this.getSize(); 
    averageVector=new double [this.featureV[0].getSize()]; 

    for (int i=0; i<numberOfVectors;i++){ 
     averageVector[i]=averageVector[i]+(FeatureVector.this.featureAt(i)); 
    } 
    for (int i=0; i<averageVector.length; i++){ 
     averageVector[i]=(averageVector[i]/numberOfVectors); 
    } 
    FeatureVector centroid = new FeatureVector (numberOfCentroids, averageVector); 
    return FeatureVector.centroid; 
    } 

類FeatureVector:

class FeatureVector { 
    private double [] elems; 
//... 

//constructor 
FeatureVector (String newName, double [] newElems){ 
    name=newName; 
    double [] elems=new double [newElems.length]; 
     for (int i=0; i < newElems.length; i++){ 
     elems[i]=newElems[i]; 
} 

和FeatureVector方法:

public double featureAt(int index){ 
    return elems[index]; 
    } 
+0

你就不能調用featureAt(一世)?您也可以嘗試FeatureVector.this.featureat(i)。這兩個建議都假設你的內部類是非靜態的。 –

+0

當試圖FeatureVector.this.featureat(i)我得到編譯器錯誤:不是一個封閉的類:FeatureVector – JavaThings

+0

你需要給我更多的信息,我認爲,什麼是「功能」,你當然至少必須有一些關於目的。你有一系列的嗎?只有一個?你根本不需要這個對象,你可以在'FeatureVector'中調用一個方法來返回這個對象? – turbo

回答

0
averageVector[i]=averageVector[i]+(FeatureVector.featureAt(i)); 

您試圖調用featureAt()作爲靜態方法。這不是你如何宣佈的。不要針對FeatureVector類調用它,而是針對該類的實例調用它。

(注意:FeatureVector.this.featureAt(i)語法完全是蠕蟲不同的水壺,這是從一個內部類用於引用擁有它的外部類對象的特殊語法。)

相關問題