Java学习-匿名类

1.筛选出符合条件的Hero:要求hp>100 && damage<50

匿名类实现:

先定义接口HeroChecker,其中的test()方法实现了Hero的筛选

1 package generic;
2 
3 import charactor.Hero;
4 
5 public interface HeroChecker {
6     public boolean test(Hero h);
7 }
 1 package generic;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.Random;
 6 import charactor.Hero;
 7 
 8 public class test {
 9 
10     public static void main(String[] args) {
11         Random r = new Random();
12         List<Hero> heros = new ArrayList<Hero>();
13         for (int i = 0; i < 10; i++) {
14             heros.add(new Hero("hero " + i, r.nextInt(1000), r.nextInt(100)));
15         }
16         System.out.println("初始化后的集合:");
17         System.out.println(heros);
18         System.out.println("筛选出 hp>100 && damange<50的英雄");
19 
20         // 借助接口HeroChecker实现匿名类,匿名类中有test()方法,正是要求的筛选方法
21         HeroChecker hc = new HeroChecker() {
22             @Override
23             public boolean test(Hero h) {
24                 // TODO Auto-generated method stub
25                 if (h.hp > 100 && h.damage < 50)
26                     return true;
27                 else
28                     return false;
29             }
30         };
31         filter(heros, hc);
32     }
33 
34     // 通过匿名类HeroChecker的test()方法,测试HeroList的每一个Hero,输出符合要求的Hero
35     private static void filter(List<Hero> heros, HeroChecker hc) {
36         for (Hero hero : heros) {
37             if (hc.test(hero) == true)
38                 System.out.print(hero);
39         }
40     }
41 
42 }

效果图:

猜你喜欢

转载自www.cnblogs.com/gilgamesh-hjb/p/12232002.html