最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8接口默認(rèn)靜態(tài)方法及重復(fù)注解原理解析

 更新時(shí)間:2020年04月03日 08:26:05   作者:moyuduo  
這篇文章主要介紹了Java8接口默認(rèn)靜態(tài)方法及重復(fù)注解原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

接口默認(rèn)方法和靜態(tài)方法

默認(rèn)方法

interface MyInterface1 {

	default String method1() {
		return "myInterface1 default method";
	}
}

class MyClass{
	public String method1() {
		return "myClass method";
	}
}

/**
 * 父類和接口中都有相同的方法,默認(rèn)使用父類的方法,即類優(yōu)先
 * @author 莫雨朵
 *
 */
class MySubClass1 extends MyClass implements MyInterface1{

}

@Test
public void test1() {
 MySubClass1 mySubClass1=new MySubClass1();
 System.out.println(mySubClass1.method1());//myClass method
}

如果類的父類的方法和接口中方法名字相同且參數(shù)一致,子類還沒有重寫方法,那么默認(rèn)使用父類的方法,即類優(yōu)先

interface MyInterface1 {

	default String method1() {
		return "myInterface1 default method";
	}
}

interface MyInterface2 {

	default String method1() {
		return "myInterface2 default method";
	}
}

/**
 * 如果類實(shí)現(xiàn)的接口中有名字相同參數(shù)類型一致的默認(rèn)方法,那么在類中必須重寫
 * @author 莫雨朵
 *
 */
class MySubClass2 implements MyInterface1,MyInterface2{

	@Override
	public String method1() {
		return MyInterface1.super.method1();
	}
	
}

@Test
public void test2() {
 MySubClass2 mySubClass2=new MySubClass2();
 System.out.println(mySubClass2.method1());//myInterface1 default method
}

如果類實(shí)現(xiàn)的接口中有名字相同參數(shù)類型一致的默認(rèn)方法,那么在類中必須重寫

靜態(tài)方法

interface MyInterface1 {	
	static String method2() {
		return "interface static method";
	}
}

@Test
public void test3() {
 System.out.println(MyInterface1.method2());//interface static method
}

重復(fù)注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MAnnotation {
	String name() default "";
	int age();
}

public class AnnotataionTest {

	@Test
	public void test() throws Exception {
		Class<AnnotataionTest> clazz=AnnotataionTest.class;
		Method method = clazz.getMethod("good", null);
		MAnnotation annotation = method.getAnnotation(MAnnotation.class);
		System.out.println(annotation.name()+":"+annotation.age());
	}
	
	@MAnnotation(name="tom",age=20)
	public void good() {
		
	}
}

以前我們是這樣使用注解,當(dāng)要在一個(gè)方法上標(biāo)注兩個(gè)相同的注解時(shí)會(huì)報(bào)錯(cuò),java8允許使用一個(gè)注解來存儲注解,可以實(shí)現(xiàn)一個(gè)注解重復(fù)標(biāo)注

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Repeatable(MAnnotations.class)//使用@Repeatable來標(biāo)注存儲注解的注解
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() {
		
	}
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java面試必備之JMM高并發(fā)編程詳解

    Java面試必備之JMM高并發(fā)編程詳解

    高并發(fā)(High?Cuncurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,它通常是指,通過設(shè)計(jì)保證系統(tǒng)能夠同時(shí)并發(fā)處理很多請求
    2022-07-07
  • MybatisPlus查詢條件空字符串和NULL問題背景分析

    MybatisPlus查詢條件空字符串和NULL問題背景分析

    文章詳細(xì)分析了MybatisPlus在處理查詢條件時(shí),空字符串和NULL值的問題,MP 3.3.0及以上版本提供了多種解決方法,包括在Bean屬性上使用注解、全局配置等,推薦使用全局配置的方式來解決這個(gè)問題,以避免在SQL查詢中出現(xiàn)不必要的空字符串條件,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 如何在Java中使用正則表達(dá)式API

    如何在Java中使用正則表達(dá)式API

    這篇文章主要介紹了如何在Java中使用正則表達(dá)式API,我們將討論java正則表達(dá)式API,以及如何在Java編程語言中使用正則表達(dá)式。具體詳細(xì)介紹,需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • knife4j+springboot3.4異常無法正確展示文檔

    knife4j+springboot3.4異常無法正確展示文檔

    本文主要介紹了knife4j+springboot3.4異常無法正確展示文檔,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • java8異步調(diào)用如何使用才是最好的方式

    java8異步調(diào)用如何使用才是最好的方式

    異步調(diào)用主要用于當(dāng)前程序的執(zhí)行不用等待調(diào)用方法執(zhí)行結(jié)束就可以繼續(xù)執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于java8異步調(diào)用如何使用才是最好的方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Java實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)元素的方法小結(jié)【三種方法比較】

    Java實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)元素的方法小結(jié)【三種方法比較】

    這篇文章主要介紹了Java實(shí)現(xiàn)刪除排序數(shù)組中重復(fù)元素的方法,結(jié)合實(shí)例形式對比分析了三種常見的數(shù)組元素刪除算法操作技巧,需要的朋友可以參考下
    2019-02-02
  • java中stringBuilder的用法詳解

    java中stringBuilder的用法詳解

    這篇文章主要介紹了java中stringBuilder的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 深入了解JAVA數(shù)據(jù)類型與運(yùn)算符

    深入了解JAVA數(shù)據(jù)類型與運(yùn)算符

    這篇文章主要介紹了Java基本數(shù)據(jù)類型和運(yùn)算符,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類型、數(shù)據(jù)類型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下
    2021-07-07
  • Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源

    Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之Action類如何訪問WEB資源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • IDEA如何進(jìn)行commit之后的代碼回退

    IDEA如何進(jìn)行commit之后的代碼回退

    在 IntelliJ IDEA 中回退 Git 版本涉及查找提交記錄、復(fù)制提交編號、重置 HEAD 并強(qiáng)行推送到遠(yuǎn)程倉庫,本文提供詳細(xì)步驟和注意事項(xiàng),幫助用戶安全地回退到舊版本
    2024-09-09

最新評論

罗定市| 潮安县| 策勒县| 寿宁县| 宣汉县| 梅州市| 邹城市| 增城市| 姜堰市| 绥芬河市| 四会市| 巧家县| 吉安市| 赞皇县| 西吉县| 新兴县| 南溪县| 句容市| 十堰市| 安龙县| 辽源市| 丰原市| 昆山市| 平舆县| 南充市| 沾益县| 西安市| 衢州市| 故城县| 南皮县| 金昌市| 鸡西市| 安陆市| 合水县| 曲阳县| 綦江县| 海南省| 浮梁县| 门源| 卓尼县| 博兴县|