iaew pessoal blz…
tava fazendo um codigo aqui e constatei uma coisa diferente… segue:
[code]
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”;
}
}[/code]
isso da um erro de compilação pq o return esta dentro de um if…
agora se vc fazer assim…
[code]
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”;
}
}[/code]
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?