簡體   English   中英

錯誤:找不到符號,聲明了對象,但看不到公共變量

[英]error: cannot find symbol, Object declared, but cant see public variable

我正在

systemB\Plumber.java:44: error: cannot find symbol
            FilterOut.Connect(FilterWildPoints.pipe1);
                                              ^
symbol:   variable pipe1
location: variable FilterWildPoints of type MiddleFilter
systemB\Plumber.java:56: error: cannot find symbol
            FilterWildPoints.pipe1.start();
                            ^
symbol:   variable pipe1
location: variable FilterWildPoints of type MiddleFilter
2 errors

即使您,FilterWildPoints也具有公共成員變量pipe1。

一個好主意是讓“狂點過濾器”將流分成另外兩個管道,並將其中一個管道連接到輸出。

Plumber.java:

package systemB;
public class Plumber
{
   public static void main( String argv[])
   {
        SourceFilter FilterIn = new SourceFilter("./datasets/FlightData.dat");
        MiddleFilter FilterTemperature = new MiddleFilterTemperature();
        MiddleFilter FilterAltitude = new MiddleFilterAltitude();
        MiddleFilter FilterWildPoints = new MiddleFilterWildPoints();
        SinkFilter FilterOut = new SinkFilter("./OutputB.dat");

        FilterOut.Connect(FilterWildPoints.pipe1);
        FilterWildPoints.Connect(FilterAltitude);
        FilterAltitude.Connect(FilterTemperature);
        FilterTemperature.Connect(FilterIn);

        FilterIn.start();
        FilterTemperature.start();
        FilterAltitude.start();
        FilterWildPoints.pipe1.start();
        FilterOut.start();
   } // main
} // Plumber

MiddleFilterWildPoints.java:

package systemB;
import java.nio.ByteBuffer;

public class MiddleFilterWildPoints extends MiddleFilter
{
    public MiddleFilter pipe1;
    public MiddleFilter pipe2;

    MiddleFilterWildPoints()
    {
        this.pipe1 =  new MiddleFilter();
        this.pipe2 =  new MiddleFilter();
    }
    //...

} // MiddleFilter

我對Java不太熟悉,需要使用它進行賦值,但找不到錯誤。

您已將FilterWildPoints聲明為MiddleFilter ,其中沒有pipe1字段。

而是使用類型MiddleFilterWildPoints聲明FilterWildPoints

MiddleFilterWildPoints FilterWildPoints = new MiddleFilterWildPoints();

Java編譯器僅查看聲明的類型。


最好遵循變量名的標准Java命名約定,以小寫字母開頭。

MiddleFilterWildPoints filterWildPoints = new MiddleFilterWildPoints();

這樣可以更容易地區分類名和變量名。

您必須實例化對象MiddleFilter。 這些實例將具有自己的屬性。 在您嘗試使用名為Pipe1的MiddleFilter類中的靜態字段。 (靜態在同一類的所有實例中都是相同的)。 要解決此問題,請創建MiddleFilter middle = new MiddleFilter,然后使用middle.pipe。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM