Ref.: LinkedHashMap - Obtendo tipo de dado de um elemento

Boa tarde.

Como obtenho o tipo de dado de um elemento de um LinkedHashMap?

lhm.get(<Item do Map>)

Se você não está usando Generics, get é do tipo Object, ou seja, você pode chamar getClass() para obter o tipo do objeto retornado por get.

Boa!, boa!.

Obrigado.

Agora!, o que venha a ser Generics?

Aquela coisa que o pessoal usa, que tem "<" e ">". Exemplo:

Map&lt;String, Cliente&gt; listaClientes = new LinkedHashMap&lt;String, Cliente&gt;();
Cliente cli = listaClientes.get ("João Severino");

Huuuuuuuuummmmmmmmmm!

Entendi!

Valeu MERMO!

Só mais uma coisinha:

                        switch (lhmAtributosClasse.get(strNomeAtributo).getClass().getSimpleName()) {
                            case 2:     //Types.NUMERIC:
                                pstmt.setInt(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));
                                break;
                            case 91:    //Types.DATE:
                                pstmt.setDate(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));
                                break;
                            case 92:    //Types.TIME:
                                pstmt.setTime(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));
                                break;
                            default:
                                System.out.println("");
                        }

incompatible Type

O que devo colocar ao ado do case?

Ou será que cosigo pegar o tipo como INT?

Obrigado mais uma vez.

Huuuuuuuuuuuummmmmmmmmmmmm!

Entendi!

Valeu MERMO!

Só mais uma coisinha:

Como transformar isso em um inteiro?

[color=red]lhmAtributosClasse.get(strNomeAtributo).getClass().getSimpleName()[/color]

                        switch (lhmAtributosClasse.get(strNomeAtributo).getClass().getSimpleName()) {
                            case "2:     //2- Types.NUMERIC:
                                pstmt.setInt(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));
                                break;
                            case 91:    //91 - Types.DATE:
                                pstmt.setDate(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));
                                break;
                            case 92:    //92 - Types.TIME:
                                pstmt.setTime(i, this.TrataDadosAGravar(lhmAtributosClasse.get(strNomeAtributo)));
                                break;
                            default:
                                System.out.println("");
                        }

Ainda não consegui resolver isso.

Quem pode me ajudar?

Valeu!

getSimpleName lhe retorna uma string.
Em vez de switch, use um monte de “ifs” e “equals”.
Pelo que acho, dá a impressão que getSimpleName vai sempre lhe retornar a mesma coisa (“Types”); é que não conheço o resto do seu programa, nem sei se Types é uma classe, uma interface ou um enum.
Se você souber que lhmAtributosClasse.get(strNomeAtributo) instanceof Types, então você pode fazer um cast para Types e efetuar o switch (esse Types.NUMERIC é uma constante de um enum?)