ventajas usar metodo generar estructura documentar documentación documentacion codigo automatica java variables deprecated jlist

usar - javadoc eclipse



Java-Método obsoleto-¿Qué hacer? (3)

Estoy siguiendo una serie de tutoriales de Java en un intento de aprenderlo. Tengo una pregunta sobre el tutorial 72.

Enlace: http://www.youtube.com/watch?v=9z_8yEv7nIc&feature=relmfu

A las 7:02 del video, esta declaración está escrita. Sin embargo, este método ha quedado obsoleto en Java 1.7.

RightList.setListData(LeftList.getSelectedValues());

Eclipse devuelve el siguiente error:

Object[] javax.swing.JList.getSelectedValues() getSelectedValues @Deprecated public Object[] getSelectedValues() Deprecated. As of JDK 1.7, replaced by getSelectedValuesList() Returns an array of all the selected values, in increasing order based on their indices in the list. Returns: the selected values, or an empty array if nothing is selected See Also: isSelectedIndex(int), getModel(), addListSelectionListener(javax.swing.event.ListSelectionListener)

Pero esto devuelve un error que dice ''El método setListData(Object[]) in the type JList is not applicable for the arguments (List)'' .

¿Cuál es la forma correcta de reemplazar la declaración anterior?

Además, quiero aprovechar esta oportunidad para hacer otra pregunta no relacionada. ¿Es mejor inicializar las variables fuera del método de la siguiente manera:

private JList LeftList = new JList(); private JList RightList = new JList(); private JButton Move = new JButton("Move -->"); private static String[] Items = {"Item 1", "Item 2","Item 3","Item 4","Item 5"};

Comparado con (Como se muestra en el video): ¿Declarar variables fuera de la clase como arriba, pero asignarles valores dentro del método?

¿Funciona mejor?


De acuerdo con JList javadoc para Java7, veo que de hecho no tienes opción, las dos API ( getSelectedValuesList y setDataList ) no están relacionadas.

Para resolverlo, una solución simple sería realizar LeftList.getSelectedValuesList().toArray() - le proporcionará una matriz adecuada para setDataList . Descargo de responsabilidad: no sé si este es el uso "correcto" recomendado por Java, pero debería funcionar.

Además, tenga en cuenta que una API obsoleta no significa que no funciona; si cree que no desea invertir tiempo en ella ahora, puede seguir usando la antigua API (como en su situación donde está haciendo un tutorial y no algún producto en curso que estará en producción durante los próximos 10 años)

En cuanto a la segunda pregunta, es cuestión de gustos, prefiero declarar las variables sin inicializarlas en la declaración de clase y establecerlas con valores en el constructor. Es costumbre dar valores iniciales a las constantes (p. Ej., public static final String AAA = "XYZ"; )


Miré el tutorial en cuestión.

Para tu pregunta sobre la API, deberías hacer lo siguiente:

rightList.setListData(leftList.getSelectedValuesList().toArray());

PD: algunos consejos sobre el estilo. En Java, las variables generalmente comienzan con un alfabeto en minúsculas y los nombres de las clases comienzan con un alfabeto en mayúsculas. En su código anterior, me pareció que estaba tratando de llamar a un método estático en una clase, por lo que es posible que desee cambiar los nombres a minúsculas.


Tendría que actualizar el método setListData para tomar el nuevo tipo de parámetro (y cualquier otro código que esperara un Object[] , incluidos los métodos, las cosas posibles que se repiten en la matriz, etc.) Solo porque algo está en desuso no lo hace significa que es eliminado , sin embargo.

Qué hacer depende de su objetivo inmediato: es aprender el material o aprender el material y actualizar toda la fuente para compilar sin advertencias.