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 }

效果图:

原文地址:https://www.cnblogs.com/gilgamesh-hjb/p/12232002.html

时间: 2024-10-07 13:23:13

Java学习-匿名类的相关文章

JAVA学习--匿名类的使用

1 public class TestProduct { 2 public static void main(String[] args) { 3 TestProduct t = new TestProduct(); 4 //方式一:创建一个实现Product接口的类的对象,并将此对象传入方法中 5 NoteBook n = new NoteBook(); 6 t.show(n); 7 //方式二:创建一个实现Product接口的匿名类的对象 8 Product p = new Product(

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件.JDK 文档部分如下所示: 因而此文将通过源码实例演示 Properties 类是如何将数据写入

Java通过匿名类来实现回调函数

在C语言中,函数名可以当做函数指针传递给形参从而实现回调 void f1() { printf("f1()\n"); } void f2() { printf("f2()\n"); } void f3() { printf("f3()\n"); } void do_func(void(*f)()) { f(); } int main() { do_func(f1); do_func(f2); do_func(f3); } 在C++11中,实现回调

java中匿名类的注意细节

abstract class Outer{ int num; public Outer(int x){ num = x; } public abstract void show1(); public abstract void show2(); } public class PC{ public static void main(String[] args){ new Outer(55)//构造父类部分 //子类重写部分 { public void show1(){ System.out.pri

java:使用匿名类直接new接口

java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口,下面是如何使用: package jimmy; import contract.ISay; public class Program { public static void main(String[] args) { ISay say = new ISay() { public void say

Java的匿名类示例

本文将通过正则表达式来过滤文件夹中的某些特殊文件,并打印出来.这其中涉及到文件过滤器,其中应用到了匿名类. package date0815.demo1; /** * Java匿名内部类 * @author zzw * */ import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.regex.Pattern; public class Test1 { public

浅谈Java的匿名类

在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码的输出是什么? Runnable x = new Runnable() { @Override public void run() { System.out.println(this.getClass()); } }; x.run(); 实际答案是出现xxxx$1这样一个类名,它是编译器给定的名称.

Java之匿名类讲解

参考https://blog.csdn.net/jiaotuwoaini/article/details/51542059 匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的. 下面是一个关于匿名类的简单例子: public class Client { public static void main(String[] args) throws InterruptedException { Thread t=new Thread(new Runnable() {

JAVA学习--Calendar 类的应用

Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理. java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();