我们知道接口一般用于定义一种规范或操作协议,然后子类实现接口的所有功能。如下面的简单代码:

定义IMessage接口

package org.lyk.entities;

public interface IMessage
{
public abstract void print();
}

定义Message类实现IMessage接口

package org.lyk.entities;

public class Message implements IMessage
{ @Override
public void print()
{
System.out.println("正在打印消息!");
} }

测试代码:

package org.lyk.main;

import org.lyk.entities.*;

public class Main
{
public static void main(String[] args)
{
IMessage msg = new Message();
showMsg(msg);
} public static void showMsg(IMessage msg)
{
msg.print();
}
}

上面的代码能很好的运行。但是如果我们有这样一种场景: Message类只会被使用一次,用完后就根本不关心这个类是否存在。对于这种情况,我们为这种临时使用的类再去定义一个.java文件在项目中显得没有必要。此时我们可以使用匿名类。

下面的测试代码演示了匿名类的定义与使用:

package org.lyk.main;

import org.lyk.entities.*;

public class Main
{
public static void main(String[] args)
{
showMsg(new IMessage()
{ @Override
public void print()
{
System.out.println("测试代码:匿名类的使用");
}
});
} public static void showMsg(IMessage msg)
{
msg.print();
}
}

可以看到,我们没有去手动实例化一个类,而是采用了“new 接口名“这种方式直接定义了一个匿名类对象,然后将它作为参数传递个函数。

Java中的匿名类的更多相关文章

  1. Java 中的 匿名类

    什么是内部类? 在一个类中定义另一个类,这样定义的类称为内部类.包含内部类的类称为内部类的外部类. 如果想要通过一个类来使用另一个类,可以定义为内部类. 内部类的外部类的成员变量在内部类仍然有效,内部 ...

  2. java内部类以及匿名类

    内部类 一个类内部定义的类称为内部类. 内部类允许把逻辑相关的类组织在一起,并控制内部代码的可视性. 内部类与外部类的结构层次如下. 顶层类:最外层的类 外部类:内部类所在的类 内部类:类内部定义的类 ...

  3. Java中的Unsafe类111

    1.Unsafe类介绍 Unsafe类是在sun.misc包下,不属于Java标准.但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty.Hadoo ...

  4. 2019.12.12 Java的多线程&匿名类

    Java基础(深入了解概念为主) 匿名类 定义 Java匿名类很像局部或内联系,只是没有明细.我们可以利用匿名类,同时定义并实例化一个类.只有局部类仅被使用一次时才应该这么做. 匿名类不能有显式定义的 ...

  5. 带有静态方法的类(java中的math类)

    带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...

  6. java中的File类

    File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真 ...

  7. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

  8. java中基于TaskEngine类封装实现定时任务

    主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...

  9. Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

随机推荐

  1. 在Windows上安装Maven

      下载 Maven 最新版本. http://maven.apache.org/download.cgi   1,下载包后,解压到相应特定位置. 2,将 [解压位置]/bin  加入到Path 3, ...

  2. 虚拟化之esxi命令行管理

    Vmware PowerCLI和Vmware CLI vMA A Linux virtual appliance that includes the vSphere SDK for Perl and ...

  3. Asp.net中从后台中如何获取html控件

    比如定义html的文本框如下: <input  type="text" onclick="fun()" id="htmlTxtDate" ...

  4. Apache ab并发负载压力测试

    由于现在网站都需要能够承受高并发要求的能力,所以当我们写完代码后,如果需要上线,最好都经过压力测试后,这样比较好 运行: 在Windows系统下,打开cmd命令行窗口,定位到apache安装目录的bi ...

  5. 认识js函数对象(Function Object)

    认识函数对象(Function Object) 可以用function关键字定义一个函数,对于每个函数可以为其指定一个函数名,通过函 数名来进行调用.这些都是代码给用户的印象,而在JavaScript ...

  6. 根据N种规格中的M种规格值生成的全部规格组合的一种算法

    近来在开发SKU模块的时候,遇到这样一个需求,某种商品有N(用未知数N来表示是因为规格的数组由用户制定且随时可以编辑的,所以对程序来说,它是一个未知数)类规格,每一类规格又有M个规格值,各种规格值的组 ...

  7. mysql log

    mysql binlog3种格式,row,mixed,statement. 解析工作 mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.0001 ...

  8. 微信公众号开发笔记(C#)

    这篇文章还不错,使用  .net , 对微信用户的想公众号发送的文字进行回复.比较简单,自己可以修改更复杂的回复. 微信公众号开发笔记(C#) 原文地址 需求分析 根据用户在微信上发送至价值中国公众号 ...

  9. thymeleaf之fragment

    MUEAS项目,web前端采用thymeleaf作为展示层.这个view解析器,个人觉得非常不错.简单而且性能也比较好!个人觉得比JSP和freemarker之类,简单易用! 今天简单记录一下frag ...

  10. css中的继承、层叠、样式优先级机制

    一.继承与层叠: