2016-03-20 9 views
0

私はこのような方法があります:メソッドrun()のメソッドがパラメータを取っている状況をどうすれば処理できますか?

public void rentBook(ArrayList<book> list, Book book) 
{ 
    if(!list.isEmpty()) 
    { 


     list.remove(book); 
     book.setAvailable(false); 
     Biblioteka.listOfRented.add(book); 

    }   

    else 
     System.out.println("No any books left"); 
} 

を、私はスレッドのrun()メソッドでは、このメソッドを呼び出したいです。私は図書館システムを作っていて、私はreade(スレッド)book(rentBook method)を借りることができるようにしたいと思います。どうすれば正しくパラメータを渡すことができますか?任意のヒント :/?

+1

あなたはパラメータが 'Thread'の' run'の方法の範囲で利用できるようにする必要があります、例えばそれらをコンストラクタのパラメータとして渡してフィールドに格納し、包含するスコープなどの 'final'ローカル変数として定義します。 –

+0

どのパラメータを渡す必要がありますか? –

+0

方法1の本のリストのように、そしてこのリストの第2の本はペルコンのように見えるので、どの本を貸したいのかを選んでください。コンストラクタを通過させる以外の方法はありませんか? –

答えて

1

コメントで述べたように、ここにあなたがそれを行うことができます2(コンパイル、実行している)の方法です:

public void methodUsingFinals() { 
    final ArrayList<book> list = new ArrayList<>(); 
    final Book currentBook = new Book(); 

    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      rentBook(list, currentBook); 
     } 
    }); 
} 

public void methodAcceptingValues(ArrayList<book> list, Book currentBook) { 
    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      rentBook(list, currentBook); 
     } 
    }); 
} 
+0

ありがとうございました。Andrew :) –

+0

それは助けてくれたと思います。 http://stackoverflow.com/help/someone-answers –

関連する問題