Rumah  >  Artikel  >  Java  >  Analisis kod kes masukan anotasi Java

Analisis kod kes masukan anotasi Java

PHPz
PHPzke hadapan
2023-04-24 17:13:081207semak imbas

Cakap itu murah, tunjukkan kodnya.

Anotasi definisi

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyLoveForYou {
	String love();
}

Kelas definisi

public class Love {
	@MyLoveForYou(love="吾爱亦吾心")
	private String love;
	public String getLove() {
		return love;
	}
	public void setLove(String love) {
		this.love = love;
	}
	//重写 toString() 方法。
	@Override
	public String toString() {
		return "Love [love=" + love + "]";
	}
}

Proses kelas anotasi

import java.lang.reflect.Field;

public class ProcessAnnotation {
	private static Love love;
	
	//创建 love 实例
	public static Love getLove(){
		Class<?> clazz = Love.class;
		try {
			Field field = clazz.getDeclaredField("love");
			field.setAccessible(true);
			MyLoveForYou  myLoveForYou = field.getAnnotation(MyLoveForYou.class);
			String fieldLove = myLoveForYou.love();
			try {
				love = (Love)clazz.newInstance();
			} catch (InstantiationException | IllegalAccessException e) {
				e.printStackTrace();
			}
			love.setLove(fieldLove);
		} catch (NoSuchFieldException | SecurityException e) {
			e.printStackTrace();
		}
		return love;
	}
}

Ujian

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class Test {
	public static void main(String[] args) throws 
	ClassNotFoundException, NoSuchMethodException, 
	SecurityException, InstantiationException, 
	IllegalAccessException, IllegalArgumentException, InvocationTargetException {
	//异常有点多,但是不用担心,其实只有三行代码。
		Love love = ProcessAnnotation.getLove();
		System.out.println(love.getLove());
		System.out.println(love.toString());
	}
}

Keputusan ujian

Analisis kod kes masukan anotasi Java

Penjelasan ringkas di bawah

Kelas anotasi yang sangat mudah digunakan di sini, menggunakan dua meta-anotasi yang paling asas (maksud meta-anotasi ialah : mengubah suai atribut kelas dikekalkan sehingga masa jalan ).
Kemudian anda boleh menggunakan anotasi Penggunaan ringkas sebenarnya sangat mudah, seperti berikut.

@MyLoveForYou(love="吾爱亦吾心")

Di sini ditekankan bahawa hanya menggunakan anotasi tidak perlu diproses dengan bantuan alat khusus Berikut ialah kelas mudah untuk memproses anotasi ( Kelas ini mungkin memerlukan sedikit pengetahuan tentang refleksi, tetapi tidak mengapa jika anda hanya ingin mengetahui fungsi anotasi, anda boleh biarkan sahaja dan ingat penggunaannya ): ProcessAnnotation
Penggunaan: Kelas ini melakukan satu perkara, tetapkan nilai kepada cinta sebagai Cinta saya adalah hati saya. Langkah terakhir ialah menguji Kaedah toString() ditulis semula di sini untuk menjadikannya kelihatan lebih intuitif.

Atas ialah kandungan terperinci Analisis kod kes masukan anotasi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam