簡體   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