首页 > 解决方案 > 错误:找不到符号,声明了对象,但看不到公共变量

问题描述

我得到了

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。

重要的想法是,让 Wild Points Filter 将流分成另外两个管道,并将其中一个管道连接到输出。

管道工.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不是很熟悉,需要这个来分配,但我找不到错误。

标签: javacompiler-errorspipes-filters

解决方案


您已声明FilterWildPointsMiddleFilter,它没有该 pipe1字段。

相反,FilterWildPoints使用以下类型声明MiddleFilterWildPoints

MiddleFilterWildPoints FilterWildPoints = new MiddleFilterWildPoints();

java 编译器只查看声明的类型。


最好遵循以小写字母开头的变量名的标准 java 命名约定。IE

MiddleFilterWildPoints filterWildPoints = new MiddleFilterWildPoints();

这样类名和变量名更容易区分。


推荐阅读