2014-12-22 3 views
0

Нужно использовать дженерики с ArrayList? Пример:Нужно ли использовать дженерики с ArrayList?

ArrayList<Object> software=new ArrayList<Object>();  

Могу ли я написать его без него? Потому что я сталкиваюсь с проблемой, когда хочу добавить к ней объект.

То, что я пытаюсь сделать, чтобы получить информацию из кадра, а затем создать объект и добавить его в тха ArrayList

class Listener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
    ArrayList software= new ArrayList(); 

    String s = (String) major.getSelectedItem(); 

    if((e.getActionCommand()).equals("SAVE")){ 
     int st_id=Integer.parseInt(id.getText()); 
     String st_name=name.getText(); 
     String st_gender = (String) gender.getSelectedItem(); 
     String st_major = (String) major.getSelectedItem(); 
     String code1=code_sw1.getText(); 
     String code2=code_sw2.getText(); 
     String code3=code_sw3.getText(); 
     double mark1=Double.parseDouble(m_sw1.getText()); 
     double mark2=Double.parseDouble(m_sw2.getText()); 
     double mark3=Double.parseDouble(m_sw3.getText()); 
     St_Sw ob1=new St_Sw(st_id,st_name,st_gender,st_major,code1,code2,code3,mark1,mark2,mark3); 
     software.add(ob1); 
    } 
    } 
} 
+3

Это очень непонятно, что вы спрашиваете здесь. – Maroun

+0

Это необязательно, это называется сырым списком, если вы не используете какой-либо параметр. – Lucas

+0

На каком объекте вы пытаетесь добавить? и как –

ответ

2

Это технически не является необходимым, и вы можете сделать ArrayList без какого-либо типа, и все работает нормально.

Это, как говорится, вы должны считать это необходимым, и всякий раз, когда вы сталкиваетесь с ситуацией, когда вам не нужно вводить ее, вы, вероятно, делаете что-то неправильно. Скорее всего, вы должны изучить полиморфизм/наследование (http://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29) или интерфейсы (http://docs.oracle.com/javase/tutorial/java/concepts/interface.html), чтобы вы могли хранить несколько типов объектов в одном массиве ArrayList.

Основная причина, по которой вы хотите ввести весь свой ArrayList, - это то, что Java скажет вам, когда вы пытаетесь сделать что-то неправильно. Сначала вы можете подумать, что это вызывает проблему, и заставить ее перестать кричать на вас всегда лучше, чем не компилировать. На самом деле, если Java кричит на вас, вы делаете что-то неправильно.

В вашем случае, похоже, что массивList содержит только объекты St_Sw. Если это так, вы хотите, чтобы ваш ArrayList с:

ArrayList<St_Sw> software=new ArrayList<St_Sw>(); 
+0

Спасибо, брату. Я добавлю свой код –

+0

Спасибо за это –

+0

Нет проблем, мне потребовалось некоторое время, чтобы понять это тоже. – WiErD0

0

Список_массивов является динамический массив с помощью, что новая память выделяется при добавлении новых элементов к списку. Нет необходимости определять размер перед созданием arraylist. Чтобы добавить объект, просто вызовите метод add для программного обеспечения.

+0

Спасибо за информацию –

1

Поскольку Java 7 вы можете использовать оператор алмазную:

ArrayList<Object> software=new ArrayList<>(); 
+0

@LuiggiMendoza Почему вы откатили мое редактирование? : D – Maroun

+0

@LuiggiMendoza Малые изменения приветствуются, мы * должны * до тех пор, пока не будем изменять критический контент. – Maroun

+0

@MarounMaroun рассматривает это как разработчик, не являющийся Java. Если я отредактировал это неправильно и использовал 6 вместо 7, я бы попробовал его, а затем получил ошибку. Я думаю, что указывает на версию программного обеспечения не Незначительное изменение, но, вероятно, это очень спорно, и я не хочу, чтобы начать пламени войны здесь. –

4

Что вы имеете в виду не параметр, это общий тип. Вы можете сделать сырой список, как это:

List list = new ArrayList(); 

, и он будет работать хорошо, однако весь смысл введения дженериков в Java, чтобы «исправить» сырые списки. Если вы храните разные объекты, кроме Object, тогда это может пойти не так, если вы, например, перебираете список и вызываете один метод для каждого элемента.

0

Как упоминалось ранее,

List list = new ArrayList(); 

, но также:

List<String> list = new ArrayList(); 

Действителен код в Java, и поддерживается по соображениям обратной совместимости, поскольку Java начал иметь raw, не общие типы для таких структур, как List и т. Д. Не общие типы не обеспечивают безопасность проверки типа во время компиляции, и этого следует избегать в новом коде, в общем случае (см. here).

Однако вы можете использовать вывод типа алмаза для сокращения, поместив «пустой» алмаз с правой стороны.

В Java это

List<String> list = new ArrayList<>(); 

Равен этой

List<String> a = new ArrayList<String>(); 
Смежные вопросы