2012-04-11 16 views
0

私はオブジェクトを返す方法を考えるのに苦労しています。Javaでオブジェクトを返す

私は以下のオブジェクトの配列を持っています。

ArrayList<Object> favourites; 

"description"プロパティに基づいて配列内のオブジェクトを探したいと思います。

public Item finditem(String description) { 

for (Object x : favourites) { 
    if(description.equals(x.getDescription())) { 
     return Object x; 
    else { 
     return null; 

誰かがこのコードをどのように記述するか教えてください。ありがとう。

+1

パブリックオブジェクトFindItem関数(文字列の記述)とのスワップ公衆項目FindItem関数(文字列の記述) –

+1

あなたのforループは、その後にオブジェクトをキャストあなたは、Java 1.4を使用して立ち往生している場合は、最初の要素 – ControlAltDel

答えて

3

使用ジェネリック:

ArrayList<Item> favourites; 

public Item finditem(String description) { 

    for (Item x : favourites) 
    if(description.equals(x.getDescription())) 
     return x; 

    return null; 
} 

それとも、本当にオブジェクトの配列を持つようにしたいならば、メソッドの戻り値の型がオブジェクトである必要があります。

public Object findItem(String description) 

しかし、それは本当にあなたのように見えますお気に入りがアイテムのarraylistになりたい!

+0

1かのために実行するために起こっていますアイテム、アイテムi =(アイテム)x; – earcam

+0

私は現在このコードを使用していますが、 "return statementが見つからない"というエラーを受け取りますか? – digby12

+0

はい私はちょうどあなたのコードをコピーして、論理も間違っていた。私はそれを修正します。 – Richante

0

汎用オブジェクトに対してgetDescriptionを呼び出すことはできません。

ArrayListを、プロパティの説明を持つ特定のタイプのObjectで構成したいとします。

あなたのクラスの項目があるので:

public class Item { 
    private String description; 

    public String getDescription(){ 
     return description; 
    } 

    ... other methods here 
} 

を今、あなたのような、このタイプのArrayListのを作成することができます。

List<Item> myList = new ArrayList<Item>(); 

そして、それの上にあなたがやっているのと同じ方法を繰り返します。 ..ほとんど。

あなたはいつもちょうどそれはあなたが探しているものはない場合、何がしたいことのようなものである第一の要素をチェックし、nullを返しますので、あなたの反復コードは、壊れている:

for (Item x : favourites) { 
    if(description.equals(x.getDescription())) { 
    return x; 

return null; 

ていることに注意してくださいこの方法でリスト全体を繰り返し処理し、サイクルの最後に到達した場合にのみnullを返します。

0

ArrayList<Item>または返品タイプをObjectに変更してください。

関連する問題