Ejemplos instanceof

	ArrayList<Animal> zoo = new ArrayList<>();

		Animal mosca = new Insecto();
		Perro firulai = new Perro();
		Insecto libelula = new Insecto();
		firulai.setRaza("Bulldog");
		zoo.add(libelula);
		zoo.add(mosca);
		zoo.add(firulai);

		for (Animal animal : zoo) {
			animal.hacerRuido();
			System.out.println(animal instanceof Perro);
			if (animal instanceof Perro) {
				((Perro) animal).getRaza();
				Perro temp = (Perro) animal;
				System.out.println(temp.getRaza());
			}

		}
	ArrayList<IVolar> elementos = new ArrayList<>();
		Pelicano p = new Pelicano("Pepe");
		Murcielago m = new Murcielago();
		Avion a = new Avion();
		// Añadir a la lista cualquier clase que implemente IVolar
		elementos.add(a);
		elementos.add(p);
		elementos.add(m);

		// Recorrer la lista con un elemento de tipo IVolar
		for (IVolar elemento : elementos) {
			elemento.volar();
		}

		// Lista de elementos que implementan INadar
		ArrayList<INadar> nadadores = new ArrayList<>();
		Delfin f = new Delfin();
		nadadores.add(f);
		nadadores.add(p);
		
		// Instanceof funciona para los Interfaces
		System.out.println(f instanceof INadar); // True
		System.out.println(p instanceof IVolar); // True
		// Recorrer la lista con un elemento de tipo INadar
	
		// Aquí hago un ArrayList de Object
		ArrayList<Object> foo = new ArrayList<>();
		// Puedo añadir cualquier objeto de java
		foo.add(f);
		foo.add(a);
		foo.add(p);
		foo.add(m);
		
		ArrayList<IVolar> vuelan = new ArrayList<>();
		ArrayList<INadar> nadan = new ArrayList<>();
		for(Object o:foo) {
			if (o instanceof IVolar) {
				vuelan.add((IVolar) o);
			}
			if (o instanceof INadar) {
				nadan.add((INadar) o);
			}
		}
		System.out.println(vuelan);
		System.out.println(nadan);

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos