2012-04-11 4 views
0

Я пытался решить, как вернуть объект.Возврат объекта в Java

У меня есть следующий массив объектов.

ArrayList<Object> favourites; 

Я хочу найти объект в массиве на основе его свойства «описание».

public Item finditem(String description) { 

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

Может кто-нибудь, пожалуйста, покажите мне, как я напишу этот код. Благодарю.

+1

Своп общественности Пункт FindItem (описание String) с FindItem общественного объекта (описание String) –

+1

Ваш цикл только собирается выполнить для первого элемента – 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) 

, но это действительно выглядит, как вы хотите, чтобы любители были архаристом предметов!

+0

+1 или если вы застряли с помощью Java 1.4 затем преобразовать объект элемент, элемент i = (элемент) x; – earcam

+0

Я использую этот код в настоящее время, но я получаю сообщение об ошибке «missing return statement»? – digby12

+0

Да, я просто скопировал ваш код, и логика тоже была неправильной. Я исправлю это. – Richante

0

Вы не можете вызвать getDescription для общего объекта.

Вы хотите, чтобы ваш ArrayList состоял из определенного типа объекта, который имеет описание свойства.

Поскольку у вас есть свой класс Предмет:

public class Item { 
    private String description; 

    public String getDescription(){ 
     return description; 
    } 

    ... other methods here 
} 

Теперь вы можете создать ArrayList этого типа, такие как:

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

И итерацию над ним так же, как вы делаете. .. почти.

Ваш код итерации нарушается, так как вы будете всегда просто проверить первый элемент и возвращает нулевое значение, если это не то, что вы ищете, что вы хотите что-то вроде:

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

return null; 

Обратите внимание, что таким образом, вы будете перебирать весь список, и только если вы достигнете конца цикла, вы вернете null.

0

ArrayList<Item> или изменить тип возврата на Object.

Смежные вопросы