2013-10-14 2 views
0

Следующий код: Я встречаю такую ​​ошибку, как я могу решить эту проблему.JavaFx cast to Object для вызова varargs

: предупреждение: вызов без varargs метода varargs с неточным аргументом типа для последнего параметра; ListView.getItems(). AddAll (ad); броска на объект для вызова списков параметров гипса в Object [] для не-вызова и списков параметров, чтобы подавить это предупреждение

String []ad = new String[100]; 
String []bd = new String[100]; 
String []cd = new String[100]; 



     int i=0; 
try { 
     Class.forName(m_Driver2); 
    } 
    catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } 


    String query2 = ""; 

    try { 
     //Create connection object 
     m_Connection2 = DriverManager.getConnection(m_Url2, "root", ""); 

     //Create Statement object 
     m_Statement2 = m_Connection2.createStatement(); 
     query2 = "SELECT * FROM diziler"; 

     //Execute the query 
     m_ResultSet2 = m_Statement2.executeQuery(query2); 
     System.out.println("TTTTTTTTTTT"); 
     while (m_ResultSet2.next()) { 

      //System.out.print(m_ResultSet.getString(1)); 
      //cBox.getItems().addAll(m_ResultSet.getString(1)); 
      ad[i]=m_ResultSet2.getString(1); 
      bd[i]=m_ResultSet2.getString(2); 

      //files=m_ResultSet.getString(3); 
      //File f4 = new File(files); 


      i++; 
      System.out.print(", "); 
      System.out.print(m_ResultSet2.getString(1)); 
      System.out.print(", "); 
      System.out.print(m_ResultSet2.getString(2)); 
      System.out.print("\n"); //new line 

     } 
      ListView.getItems().addAll(ad); 


    } 
    catch (SQLException ex) { 
     ex.printStackTrace(); 
     System.out.println(query2); 
    } 
    finally { 

     try { 
      if (m_ResultSet2 != null) 
       m_ResultSet2.close(); 
      if (m_Statement2 != null) 
       m_Statement2.close(); 
      if (m_Connection2 != null) 
       m_Connection2.close(); 
     } 
     catch (SQLException ex) { 
      ex.printStackTrace(); 
     } 
    } 

ответ

0

Решения

Укажите тип ListView при определении ListView.

ListView<String> listview = new ListView<>(); 

Объяснение

Если вы не говорите ListView, что это для списка строк, то при попытке добавить массив в ListView с помощью метода addAll, компилятор Java предупреждает, что это не сработает, если вы пытаетесь добавить отдельные элементы в массив в список поддержки как разные элементы в списке или сам массив как только один элемент в списке. Но когда вы указываете ListView, что это список строк, компилятор достаточно умен, чтобы знать, что вы не можете захотеть добавить массив списков в виде одного элемента в списке, но вместо этого хотите добавить каждого отдельного пользователя элемент в массиве в список. Кроме того, когда вы указываете тип ListView, доступны более сильные проверки типов, и по ошибке невозможно добавить что-то неправильного типа в список.

Пример кода

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.ListView; 
import javafx.stage.Stage; 

public class ListLoader extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage stage) throws Exception { 
     String[] data = { "apple", "orange", "pear" }; 

     ListView<String> listview = new ListView<>(); 
     listview.getItems().addAll(data); 

     stage.setScene(new Scene(listview)); 
     stage.show(); 
    } 
} 

Unrelated Совет

Пара случайных комментариев на ваш код:

  1. Использование Java именования (не называйте переменную ListView , вместо этого назовите его listView).
  2. Выполняйте свои длительные задачи (например, запросы базы данных) в другом потоке и используйте утилиты параллелизма JavaFX, чтобы гарантировать, что элементы ListView не будут обновляться в этом потоке. См. Это example заполнения ListView из базы данных с помощью Задачи.
  3. Использовать согласованный отступ.
  4. Удалите ненужный и неактуальный код и комментарии перед публикацией (или, еще лучше, отправьте сообщение sscce).
  5. При публикации вопроса JavaFX используйте теги javafx или javafx-2.
+0

Спасибо за помощь и совет. Я начинающий программист сожалею о своих ошибках. –

+0

Не беспокойтесь, эта часть [Java generics] (http://docs.oracle.com/javase/tutorial/java/generics/) является странной и запутанной. Мне пришлось написать небольшую программу, чтобы понять, что не так, и как ее исправить, и я давно использую Java. – jewelsea

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