时间:2021-05-19
接口默认方法和静态方法
默认方法
如果类的父类的方法和接口中方法名字相同且参数一致,子类还没有重写方法,那么默认使用父类的方法,即类优先
interface MyInterface1 { default String method1() { return "myInterface1 default method"; }}interface MyInterface2 { default String method1() { return "myInterface2 default method"; }}/** * 如果类实现的接口中有名字相同参数类型一致的默认方法,那么在类中必须重写 * @author 莫雨朵 * */class MySubClass2 implements MyInterface1,MyInterface2{ @Override public String method1() { return MyInterface1.super.method1(); } }@Testpublic void test2() { MySubClass2 mySubClass2=new MySubClass2(); System.out.println(mySubClass2.method1());//myInterface1 default method}如果类实现的接口中有名字相同参数类型一致的默认方法,那么在类中必须重写
静态方法
重复注解
以前我们是这样使用注解,当要在一个方法上标注两个相同的注解时会报错,java8允许使用一个注解来存储注解,可以实现一个注解重复标注
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Repeatable(MAnnotations.class)//使用@Repeatable来标注存储注解的注解public @interface MAnnotation { String name() default ""; int age();}@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface MAnnotations { MAnnotation[] value();}public class AnnotataionTest { @Test public void test() throws Exception { Class<AnnotataionTest> clazz=AnnotataionTest.class; Method method = clazz.getMethod("good"); MAnnotation[] mAnnotations = method.getAnnotationsByType(MAnnotation.class); for (MAnnotation annotation : mAnnotations) { System.out.println(annotation.name()+":"+annotation.age()); } } @MAnnotation(name="tom",age=20) @MAnnotation(name="jack",age=25) public void good() { }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法。今天我们继续学习Java8的新语言特性——方法引用(MethodReferen
前言在Java8之前,默认情况下,接口中的所有方法都是公共的和抽象的。但是这一限制在Java8中被打破了,Java8允许开发人员在接口中添加新方法,而无需在实现
一、什么是重复注解允许在同一申明类型(类,属性,或方法)的多次使用同一个注解二、一个简单的例子java8之前也有重复使用注解的解决方案,但可读性不是很好,比如下
前言上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式。现在继续Java8新语言特性的学习,今天,我们要学习的是默认方法和静态接
本文实例讲述了Java8新增的重复注解功能。分享给大家供大家参考,具体如下:一点睛在Java8以前,同一个程序元素前最多只能使用一个相同类型的Annotatio