Conversão de maiúsculo para minúsculo em objeto [RESOLVIDO]

8 respostas
W

Boa tarde a todos do fórum.
tenho uma dúvida, aparentemente boba sobre conversão de caixa baixa para alta e vice versa…
o caso é o seguinte…

Possuo um Objeto X com os campos a,b,c…do tipo string (para simplificar)…

eu gostaria de passar esses campos para maiusculo, mas não do modo

a.upperCase;

b.upperCase;

c.upperCase;

existe algo no java q eu possa receber um objeto qualker, e retornar todos os campos ja em maiusculo ?
ou teria que fazer no braço mesmo ?

Obrigado !!!

8 Respostas

davidbuzatto

Não existe.
Lembre-se que Strings são imutávels. A simples chamada ao método toUpperCase não muda o valor da String. Você tem que atribuir o retorno do método na variável.

Exemplo:

String str = "um dois três"; str = str.toUpperCase();

[]'s

davidbuzatto

Fiz um exemplo aqui com reflexão.
Ai sim você pode fazer algo do tipo que você precisa.

import java.lang.reflect.Field;

/**
 *
 * @author David Buzatto
 */
public class Pessoa {
    
    private String nome;
    private String sobrenome;
    private double altura;
    
    public Pessoa( String nome, String sobrenome, double altura ) {
        this.nome = nome;
        this.sobrenome = sobrenome;
        this.altura = altura;
    }
    
    @Override
    public String toString() {
        return nome + " " + sobrenome + " " + altura;
    }
    
    public void toUpperCase() {
        
        try {
            for ( Field f : getClass().getDeclaredFields() ) {
                if ( f.getType().equals( String.class ) ) {
                    f.set( this, f.get( this ).toString().toUpperCase() );
                }
            }
        } catch ( IllegalAccessException exc ) {
            exc.printStackTrace();
        }
        
    }
    
}


/**
 *
 * @author David Buzatto
 */
public class Teste {

    /**
     * @param args the command line arguments
     */
    public static void main( String[] args ) {
        Pessoa p = new Pessoa( "joão", "silva", 1.8 );
        p.toUpperCase();
        System.out.println( p );
    }
}

[]'s

W

bem, se não existe então imagino que terei q fazer a mão mesmo…
é o seguinte, estou fazendo uma aplicação web, e necessito que todos os campos sejam em letras maiúsculas…
no css existe a propriedade: “text-transform : uppercase” mas ele não envia os dados em maiúsculo, modifica apenas na aparência.
ou estou indo pelo caminho mais dificil, se existir uma solução mais fácil gostaria de saber…

obrigado \o

W

aahh…gostei do seu exemplo…realmente me deu uma luz, eu kero fazer uma função genérica para receber qualker objeto e converter seus campos para maiúsculo
eu estava fazendo algo do tipo agora…mas estava embolado na parte de pegar os campos do objeto recebido…

Mt obrigado pela ajuda amigo, o pessoal do GUJ é bom mesmo xD
obrigado \o

Mstanguine
well.nunes:
bem, se não existe então imagino que terei q fazer a mão mesmo... é o seguinte, estou fazendo uma aplicação web
Acredito que com JavaScript, seria possivel fazer isso. Ex.:
<html>
<head>
	<script type="text/JavaScript">
		function minusculo(input){ 
		var str=input.value; //obtem o valor
		input.value=str.toLowerCase(); //converte as strings e retorna ao campo
		}
	</script>
</head>

<body>
	<form name="form" method="POST">
		<center>
			Converter Minuscula para Maiuscula<br />
			&lt;input type="text" name="stringup" onkeyup="minusculo(this)"&gt;<br /><br /><br />

			Converter Minuscula para Maiuscula quando o campo perde o focus<br />
			&lt;input type="text" name="stringp" onBlur="minusculo(this)"&gt;
		&lt;/center&gt;
	&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
... Edit: Ops, aqui tava ao contrario que vc pediu, convertia de minusculo para maiusculo. Corrigido =D
W

Obrigado pela ajuda também, estou tentando fazer do modo que o David deu o exemplo,
caso não dê certo vou tentar do seu modo rs…
estou trabalhando nisso agora, posto a solução quando terminar e coloco o topico para [Resolvido]

obrigado denovo a todos pela ajuda

davidbuzatto

Pronto, esse método resolve seu problema.
Considere a mesma classe Pessoa que postei.

import java.lang.reflect.Field;

/**
 *
 * @author David Buzatto
 */
public class Teste {

    /**
     * @param args the command line arguments
     */
    public static void main( String[] args ) {
        Pessoa p = new Pessoa( "João", "silva", 1.8 );
        toUpperCase( p );
        System.out.println( p );
    }
    
    public static void toUpperCase( Object obj ) {
        try {  
            for ( Field f : obj.getClass().getDeclaredFields() ) { 
                f.setAccessible( true );
                if ( f.getType().equals( String.class ) ) {  
                    f.set( obj, f.get( obj ).toString().toUpperCase() );  
                }  
            }  
        } catch ( IllegalAccessException exc ) {  
            exc.printStackTrace();  
        }
    }
    
}
W

beem, eu estava quase lá, sou iniciante em java estava tropeçando nisso : f.setAccessible(true);
Obrigado a todos q ajudaram, vou mudar para resolvido
Até a proxima rs

Criado 7 de novembro de 2011
Ultima resposta 7 de nov. de 2011
Respostas 8
Participantes 3