2013-12-13 2 views
2

По какой-то причине .get() недействительный метод в моем коде. Может кто-нибудь указать на ошибку? (Извините за некорректные имена объектов (не планировали на обмен этого кода))Не удается найти .get() в Arraylist

public class Summon_Tester 
{ 
    public static void main (String [] Args) 
    { 
    Summoned_Bin Bin = new Summoned_Bin(); 
    Bin.addToBin(); 
    System.out.println(Bin.get(0)); 
    } 
} 

Summoned_Bin код

import java.util.ArrayList; 
public class Summoned_Bin 
{ 
    ArrayList<Summon> Bin = new ArrayList<Summon>(); 

    Summoned_Bin() 
    { 
    } 

    void addToBin() 
    { 
    Summon summoned = new Summon(); 
    int index = 0; 
    while (Bin.get(index) != null) 
    { 
     index++; 
    } 
    Bin.add(index , summoned); 
    } 
} 
+0

Возможный дубликат [Arraylist - компилятор меня смущает] (http://stackoverflow.com/questions/20557723/arraylist-compiler-is-confusing-me) –

+4

Как это дубликат? –

+0

Возможно, вы имели в виду 'Bin.Bin.get (0)'? Хотя решение в следующем ответе больше предлагается. – johnchen902

ответ

3

Summoned_Bin не является ArrayList, поскольку он не расширяет класс ArrayList. Скорее, это содержит ArrayList. Знайте, что это нормально, вполне нормально улучшать класс по составу, а не наследованию, но просто не пытайтесь использовать какие-либо методы ArrayList непосредственно на нем.

У вас есть две общие решения:

  1. Вы можете сделать это продлить ArrayList, но я не уверен, что это лучшее, что можно сделать, или
  2. Вы можете дать ему публичные методы которые позволяют внешним классам извлекать информацию.

Например, дать ему get(...) метод:

public Summon get(int index) { 
    return Bin.get(index); 
} 

Редактировать
Как nachokk справедливо предполагает, вы хотите учиться и следовать Java code conventions, как делать это сделает его намного легче для других понять ваш код.

+4

В качестве примечания (не для вас наведите указатель мыши) следуйте [java code conventions] (http://www.oracle.com/technetwork/java/codeconv-138413.html) и придерживайтесь их! – nachokk

+0

@nachokk: хорошо пункт! - включены в редактирование. Благодаря! –

+0

Как я сказал: «Извините за неправильные имена объектов (не планировал делиться кодом)» –

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