|  | // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | package shaking12; | 
|  |  | 
|  | import java.util.ArrayList; | 
|  | import java.util.Iterator; | 
|  | import java.util.List; | 
|  |  | 
|  | public class Shaking { | 
|  |  | 
|  | static private Named createInstance(Class<? extends Named> aClass) { | 
|  | try { | 
|  | return aClass.newInstance(); | 
|  | } catch (InstantiationException | IllegalAccessException e) { | 
|  | e.printStackTrace(); | 
|  | } | 
|  | return new Named() { | 
|  | @Override | 
|  | public String getName() { | 
|  | return "Unknown"; | 
|  | } | 
|  | }; | 
|  | } | 
|  |  | 
|  | public static void main(String[] args) { | 
|  | List<Class<? extends Named>> classes = new ArrayList<>(3); | 
|  | classes.add(MetaphorClass.class); | 
|  | classes.add(PeopleClass.class); | 
|  | classes.add(ThingClass.class); | 
|  | Iterator<Class<? extends Named>> iterator = classes.iterator(); | 
|  | iterator.next(); | 
|  | while (iterator.hasNext()) { | 
|  | Named item = createInstance(iterator.next()); | 
|  | if (item instanceof AnimalClass) { | 
|  | System.out.println("An animal!"); | 
|  | } | 
|  | System.out.println(createInstance(iterator.next()).getName()); | 
|  | } | 
|  | } | 
|  | } |