Inherited继承的练习

查了一些资料后,自己做的练习,留个底

练习 Inherited,子类对父类注解的继承,父类的注解有标注Inherited后,子类可以获取父类中对类的注解需要注意的是如果子类重写了父类的方法,就无法获取父类方法中的注解了,注解也作为了方法的一部分被覆盖了

package exe.zyx.annotaion.inherited;

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface TestInherited {
	public String value();

}
package exe.zyx.annotaion.inherited;

@TestInherited("parent class")
public class Parent {
	
	@TestInherited("parent method")
	public void publicM(){
		System.out.println("Parent.publicM()");
	}
}
package exe.zyx.annotaion.inherited;

public class Sub extends Parent {
	
	//@Override
	public void publicM1(){
		System.out.println("Sub.publicM()");
	}
}	
package exe.zyx.annotaion.inherited;

import java.lang.reflect.Method;

public class TestMain {
	
	public static void main(String[] args) throws Exception {
		classTest();
		methodTest();
	}

	private static void methodTest() throws Exception {
		Class<Sub> subClass = Sub.class;
		Method method = subClass.getMethod("publicM", new Class[]{});
		
		if (method.isAnnotationPresent(TestInherited.class)) {
			TestInherited test = method.getAnnotation(TestInherited.class);
			System.out.println("methodTest:" + test.value());
		}
	}

	private static void classTest() {
		Class<Sub> subClass = Sub.class;
		
		if (subClass.isAnnotationPresent(TestInherited.class)) {
			TestInherited test = subClass.getAnnotation(TestInherited.class);
			System.out.println("classTest:" + test.value());
		}
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值