繁体   English   中英

将变量传递给另一个类 Java

[英]Passing variable to another class Java

我需要将在 Buffer 类中处理的布尔值传递给 Reader 类。 以下是课程:

public class Buffer {

    public int read(int j) {
      (if condition) {
         setBool(true);
      }
      (else if condition) {
         setBool(false);
      }
       else
         setBool(true);
       return 0;
    }

    public boolean setBool(boolean value) {
        boolean val = value;
        return val;
    }
}
public class Reader implements Runnable{
    Buffer buffer;

    public Reader(Buffer buffer){
        this.buffer = buffer;
    }

    public synchronized void run() {
        int j=0;
        int k=0;
        while (k!=18)
           buffer.read(j);
           j++;
           k++;
    }
}

我尝试在类 Buffer 中创建另一个方法,该方法将由类 Reader 调用,如下所示,

public class Buffer {
   private static boolean value; 

   public int read(int j) { ..... }
   public boolean setBool(boolean value { ....} 

   public boolean getBool() {
      boolean val = setBool(value);
      return val;
   }
}

public class Reader {
    Buffer buffer;

    public Reader(Buffer buffer){...}

    public synchronized void run() {
        int j=0;
        int k=0;
        while (k!=18)
           buffer.read(j);
           j++;
           k++;
          boolean value = getBool();
    }
}

但是,当我显示方法 setBool 的值来检查它时,它同时显示 true 和 false。 我不确定我应该如何进行。

  • 您可以使用value作为Buffer的属性,您将拥有它的 setter 和 getter,
  • 似乎也将第二个条件放在第一位,允许您删除一个分支
  • 你还需要read(j)返回一个int实际上它什么都不返回
class Buffer {
    private boolean value;

    public int read(int j) {
        if (condition2) {
            this.value = false;
        } else {
            this.value = true;
        }
        return 0; 
    }

    public boolean isValue() {
        return value;
    }

    public void setValue(boolean value) {
        this.value = value;
    }
}

所以

class Reader implements Runnable {
    Buffer buffer;

    public Reader(Buffer buffer) {
        this.buffer = buffer;
    }

    @Override
    public synchronized void run() {
        int j = 0;
        int k = 0;
        while (k != 18) {
            buffer.read(j);
            j++;
            k++;
            boolean v = buffer.isValue();
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM