Alguem poderia me dar uma melhor definição do** laço for each**, algum exemplo ? Desde já agradeço
O foreach é um syntactic sugar, ele facilita ao percorrer uma lista por exemplo, assim:
for (Tipo variável:lista) { //corpo do for }
É como nosso amigo AndryPontes falou, a partir do java 8 ele inseriu “seu próprio foreach”, antes faziamos o foreach da seguinte forma em java:
// um array de clientes
List<Clientes> listaClientes = new ArrayList<>();
//o que faziamos e fazemos para pecorrer essas lista.
for(Cliente cliente: ListaClientes){
system.out.println(cliente.getNome());
}
a partir do java 8 usamos seu proprio foreach, junto com a lambda ex:
listaClientes.foreach(cliente -> system.out.println(cliente.getNome));
Veja que fica bem menor o código e faz a mesma função.
vlw
Galera, to usando uma arraylist na arquitetura MVC.
No caso, quando criei a arraylist pus como tipo de dado a classe Model, onde ficará guardado os valores que o usuario digitou na View:
ArrayList <InserirModel> Insere = new ArrayList <>();
Porém, quando vou criar um metodo no Controller, ele não aceita eu criar o iterator da foma:
public class ViewController {
InserirModel im = new InserirModel();
public void mostraDados(ArrayList a) {
for (InserirModel obj : a) {
// Digitando isso, o NetBeans ja me da um alerta dizendo pra mudar a variável "obj" para o tipo Object, mas dessa forma, perco a referência ao Model.
}
Como suceder nesse caso?
Quando crio o for each na View, ele aceita, mas no Controller, ele da esse alerta
Já foi respondido neste tópico, de qualquer forma, segue a explicação:
As implementações da interface List
são genéricas desde o Java 5, então procure especificar o tipo de dado ao declará-las.
Se não especificar o tipo, o compilador entende como sendo Object
.
Troque a seguinte assinatura de método:
public void mostraDados(ArrayList a) {
Para ser assim:
public void mostraDados(List<InserirModel> a) {