que estoy tratando de hacer algo a lo largo de las líneas de:Java: conversión de tipo dinámico utilizando las enumeraciones
public void setContents(Object[] values)
{
...
//A. this works
mRank =
((String)(values[Columns.RANK.index]));
//B. doesn't work (entire line underlined by netbeans)
mRank =
(Columns.RANK.type.cast(values[Columns.RANK.index]));
//incompatible types: required java,lang.String found: java.lang.Object
//C. doesn't work (first RANK is underlined by netbeans)
mRank =
((Columns.RANK.type)(values[Columns.RANK.index]));
//cannot find symbol symbol: class RANK location: blah.blah.Columns
...
}
donde las columnas es una enumeración interior, así:
public static enum Columns
{
RANK(0, "Rank", String.class),
NUMBER(1, "Number", Integer.class);
public String text;
public Class type;
public int index;
private Columns(int idx, String text, Class clasz)
{
this.type = clasz;
this.text = text;
this.index = idx;
}
}
entiendo por qué la línea B
no funciona, pero lo que no entiendo es por qué C
no funciona. Si utilizo Columns.RANK.type
en cualquier otro lugar que no sea un tipo de conversión, funciona bien, pero intento hacer un tipo de transmisión con la clase, compila diciendo que no puede encontrar RANK
en la enumeración, que no debería ser el caso.
¿Cómo funciona?
Gracias!
'javac' en JDK7 dará una advertencia de pelusas en los tipos en su tipo' Clase 'sin procesar, lo que debería hacer que este tipo de problema sea más obvio. –