Olá pessoal, estou com um problema aqui, tenho um método q retorna um String, dentro desse metodo tem um laço "for" e dentro desse "for", se eu acho um determinado valor eu retorno ele com "return valor" acontece q ao invés de sair do metodo ele vai pra linha subsequente ao "for" e continua dentro do método. No caso o "return" tah com complexo de "break", to achando mto estranho pois nunca vi isso, ou eu desaprendi a programar ou o meu java tah louco…hehehe
Vou postar o código abaixo:
public String getCampoHibernate(String nomeTabela, String nomeCampo) {
try {
String ret = null;
String[] array = Tpt200.class.getName().split("\\.");
String path = "";
for (int i = 0; i < array.length - 1; i++) {
if(!path.isEmpty()){
path+=".";
}
path += array[i];
}
String classe = nomeTabela.toString();
if(!classe.contains("Id")){
classe = nomeTabela.substring(0, 1).toUpperCase()
+ nomeTabela.substring(1, 3).toLowerCase()
+ nomeTabela.substring(3);
}
path += "." + classe;
Class c = Class.forName(path);
Method[] methods = c.getMethods();
String name;
String field;
for (Method method : methods) {
// Desconsidera quaisquer métodos de java.lang.Object
// (especialmente getClass()).
if ((method.getDeclaringClass() == java.lang.Object.class) ||
// Desconsidera o método se requerer qualquer parâmetro.
(method.getParameterTypes().length > 0)) {
continue;
}
name = method.getName();
field = "";
if (name.startsWith("get") && name.length() > 3
&& Character.isUpperCase(name.charAt(3))) {
field = name.substring(3);
} else if (name.startsWith("is") && name.length() > 2
&& Character.isUpperCase(name.charAt(2))) {
field = name.substring(2);
}
if (field.length() > 0) {
if (field.length() == 1) {
field = field.toLowerCase();
} else if (!Character.isUpperCase(field.charAt(1))) {
field = field.substring(0, 1).toLowerCase()
+ field.substring(1);
}
if(nomeCampo.toLowerCase().equals(field)){
if(!classe.contains("Id")){
return field;
}else{
return classe.substring(0,1).toLowerCase() + classe.substring(1) + "." + field;
}
}
}
}
if(!classe.contains("Id")){
getCampoHibernate(classe+"Id", nomeCampo);
}
} catch (ClassNotFoundException e) {
return null;
}
return null;
}
Olhando no código, qdo ele entra na linha 49 ou 51 ao invés de sair do metodo ele passa a executar a linha 56 ainda dentro do método e no fim u único return q realmente sai do metodo eh o "return null" da linha 63.
Desde ja agradeço a atenção.