Java 8 除了给接口带来了 默认方法之外,还给接口带来了 静态方法。而且,Java 8 中的静态方法还可以有具体的实现。

我们都知道,在 Java 7 及之前的版本中,接口 interface 是不允许有静态方法声明的,例如下面的代码

InterfaceStaticMethodTester.java

public class InterfaceStaticMethodTester

{

public static void main(String[] args)

{

}

interface Greeter {

public static void greeter(String name);

}

}

在 Java 7 版本下,编译会报错

[yufei@www.twle.cn helloworld]$ javac InterfaceStaticMethodTester.java && java InterfaceStaticMethodTester

InterfaceDefaultMethodTester.java:8: 错误: 此处不允许使用修饰符static

public static void greeter(String name);

^

1 个错误

但是,Java 8 为接口引入了 静态方法 功能。在 Java 8 中,接口不仅可以有静态方法声明,还可以有静态方法实现,例如

InterfaceStaticMethodTester.java

public class InterfaceStaticMethodTester

{

public static void main(String[] args)

{

Greeter.greeter("简单教程");

}

interface Greeter

{

public static void greeter(String name)

{

System.out.println("你好," + name);

}

}

}

运行结果如下

[yufei@www.twle.cn helloworld]$ javac InterfaceStaticMethodTester.java && java InterfaceStaticMethodTester

你好,简单教程

但是,Java 8 的接口中的静态方法必须有自己的实现,而不能仅仅是一个接口声明,不然编译是会报错的。

例如下面的代码

InterfaceStaticMethodTester.java

public class InterfaceStaticMethodTester

{

public static void main(String[] args)

{

}

interface Greeter

{

public static void greeter(String name);

}

}

运行结果如下

[yufei@www.twle.cn helloworld]$ javac InterfaceStaticMethodTester.java && java InterfaceStaticMethodTester

InterfaceStaticMethodTester.java:9: 错误: 缺少方法主体, 或声明抽象

public static void greeter(String name);

^

1 个错误

如果添加了 abstract 关键字,其实,abstract 关键和 static 关键字是不兼容的

public class InterfaceStaticMethodTester

{

public static void main(String[] args)

{

}

interface Greeter

{

public abstract static void greeter(String name);

}

}

运行结果如下

InterfaceStaticMethodTester.java:9: 错误: 非法的修饰符组合: abstract和static

public abstract static void greeter(String name);

^

1 个错误

所以,Java 8 支持接口中的静态方法,但静态方法必须有实现,不支持静态方法声明。

java 接口 静态方法_Java 8 接口静态方法相关推荐

  1. java8接口写静态方法_Java 8接口更改–静态方法,默认方法

    java8接口写静态方法 Java 8 interface changes include static methods and default methods in interfaces. Prio ...

  2. java静态引用_Java开发中静态方法引用和实例方法引用案例详细讲解

    Java开发 前言 在Java的日常开发中静态方法引用和实例方法引用在很多地方都会用到,可以说是万金油,但是你真的掌握了吗?下面就由小编给大家做一个比较细想的讲解,废话不多说现在开始把. 正文 大家对 ...

  3. java集合框架中抽象有序列表的接口是_JAVA基础接口集合框架

    接口 -------------------------------------------------------------------------------- 一.接口(是一种规范) 1.接口 ...

  4. java map 教程_Java Map接口

    Java Map接口 在本教程中,我们将学习Java Map接口及其方法. Java collections框架的Map接口提供了Map数据结构的功能. 它实现了Collection接口. map的工 ...

  5. java interface 实例_Java - Interface 接口的实现方式实例

    在程序的开发中,需要完成两个数的求和运算和比较运算功能的类非常多.那么可以定义一个接口来将类似的功能组织在一起.下面创建一个示例,具体介绍接口的实现方式. 1)创建一个名称为 IMath 的接口,代码 ...

  6. java 微信多媒体文件_java微信接口之三—上传多媒体文件

    一.微信上传多媒体接口简介 1.请求:该请求是使用post提交from来实现的,我们可以在网页上进行表单提交来实现.地址为: http://file.api.weixin.qq.com/cgi-bin ...

  7. java 请求响应_java http接口请求响应 request response

    接口类: 1 package org.sunshine.dcda.epg.wechat.controller.niao; 2 3 import javax.servlet.http.HttpServl ...

  8. java comparable接口作用_Java Comparable 接口

    compareTo()的灵活性 如果我们反复调用上面的compareTo()方法,那么我们可以通过大小来排序,这很棒,但并非故事的结束.如果我们想通过颜色来给苹果排序呢?抑或是重量?我们也可以做到.关 ...

  9. java 接口编程_JAVA面向接口编程

    一.什么是面向接口编程 要正确地使用Java语言进行面向对象的编程,从而提高程序的复用性,增加程序的可维护性.可扩展性,就必须是面向接口的编程.面向接口的编程就意味着:开发系统时,主体构架使用接口,接 ...

最新文章

  1. ThinkPHP公共配置文件与各自项目中配置文件组合的方法
  2. html隐藏定位,html – 如何使绝对定位(溢出:隐藏)容器的绝对定位的子项显示在其父项区域之外?...
  3. BeanFactory和ApplicationContext有什么区别?
  4. 挖掘城市ip_抖in杭州嘉年华,原来城市营销还能这么玩!
  5. 施密特正交化的几何解释
  6. 系统架构设计_分布式、服务化的ERP系统架构设计
  7. MySQL/MariaDB数据库备份与恢复
  8. python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
  9. HTTP代理服务器 - Apache httpd
  10. 基于MeanShift的Camshift算法原理详解(opencv实现,有源码)
  11. sql with ties_SQL WITH TIES子句
  12. sjtu1313 太湖旅行
  13. MATLAB对简谐运动的分析
  14. 去除word转pdf时的图片黑边
  15. 如何实现自适应页面 (响应式布局)
  16. TasNet端到端模型
  17. 5.4 微程序控制器
  18. ArcGIS学习之tif文件打开一片空白的解决办法——创建金字塔
  19. 做测试8年,33岁前只想追求大厂高薪,今年只求稳定收入
  20. 啥是inference推理/推断?

热门文章

  1. python画圆简单代码-Python 用turtle实现用正方形画圆的例子
  2. python散点图拟合曲线-python曲线拟合
  3. python 数据分析学什么-数据分析培训学习多久?都学什么?
  4. python面试常见问题-10个Python面试常问的问题
  5. python 装饰器 参数-python装饰器的详细解析
  6. python入门教程非常详细-python初学者怎么入门:python入门教程非常详细
  7. python 数据分析学什么-如何学习Python数据分析呢?老男孩Python培训
  8. python语言自学-python语言学习笔记整理
  9. python入门教程2word-入门干货:Python操作Word文件经验分享
  10. python菜鸟教程m-Python map() 函数