Duvida com Retorno

3 respostas
Jeferson_Manetti

iaew pessoal blz...

tava fazendo um codigo aqui e constatei uma coisa diferente... segue:
public class A {

public static void main (String [] args) throws Exception{
 
  String str = new A().retorno();

}

public String retorno()  throws Exception{
 // aqui da erro de compilação
 if( true ){
    return go();
 }else{
     // para rodar teria q colocar um return aqui tambem...
 }
 
 // ou colocar um return aqui...

}

public String go(){
 return "ok";
}

}
isso da um erro de compilação pq o return esta dentro de um if.... agora se vc fazer assim...
public class A {

public static void main (String [] args)  throws Exception {
 
  String str = new A().retorno();

}

public String retorno() throws Exception{
 
 if( true ){
    return go();
 }else{
     throw new Exception();
 }
 
 // ele não precisa ter outro return

}

public String go(){
 return "ok";
}

}

esse aqui compila ele considera o throw como um retorno (de fato ele retorna)...
nunca tinha me deparado com uma situação dessas...

essa e a classe q eu estava fazendo e fiquei surpreso qnd não deu erro...
public class FindController implements OperationControllerIfc {

    private StrategyFindIfc strategyFind = null;

    @Override
    public Object executeOperation(Map<String,Object> dadosView) throws Exception {
        String source = String.valueOf(dadosView.get("SOURCE"));
        
        if(ConfigIfc.USUARIO.equals(source))
            strategyFind = new UsuarioStrategy();     

        if(null != strategyFind){
            return strategyFind.executeFind(dadosView);
        }else{
            throw new Exception("Não foi possivel determinar o tipo de Operação.");
        }

    }

}

sera q esse tipo de coisa cai no exame?
algum de vcs ja havia se deparado com o cod acima?

3 Respostas

ricardo13

olá,

A nível de exame, esse último código que você postou eu acho improvável de cair.

Primeiro que tem um alto grau de legibilidade (pelo menos para mim). Até eu tentar decifrar para saber o que essa classe executa vai um certo tempo.

Com relação ao dois primeiros, são códigos simples, com chances de cair questões deste tipo, mas percebe que pela simplicidade do código é preciso ter um certo grau de atenção, porque se bobear assinala opção errada.

ta ok !!!

Espero ter respondido a sua dúvida

Ricardo

J

Olá Jeferson,

no meu exame não apareceu esse tipo de questão. Caso no seu venha a aparecer vc já sabe o comportamento do código. Uma boa prática nos estudos para a certificação é testar códigos e mais códigos afim de eliminar o máximo possível os comportamentos “desconhecidos” e “inesperados”, porque nem todos os comportamentos estarão explícitos nos livros de preparação para o exame.

Att.

javadev.

Jeferson_Manetti

Pelo menos esse eu já não erro mais XD

Criado 14 de janeiro de 2009
Ultima resposta 15 de jan. de 2009
Respostas 3
Participantes 3