📄 form.java
字号:
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Form {
@Text(prompt="内容",size=10) private String text = "测试"; //标识符变量
@Submit private void getSubmit(String str){System.out.println("submit 方法!"+str);} //可以使用不同的方法名.
public Form() {}
Annotation getField(Field f) {
Annotation[] as = f.getAnnotations(); //取得被注释的变量(不认私有还是公有),没被注释过的变量不返回
for(Annotation a : as) { if(a instanceof Text){ return a;} }
return null;
}
Annotation getMethod(Method m) {
Annotation[] as = m.getAnnotations(); //取得被注释的方法(不认私有还是公有),没被注释过的方法不返回
for(Annotation a : as) { if(a instanceof Submit){ return a;} }
return null;
}
public void test() throws IllegalAccessException, InvocationTargetException{
Field[] fields = getClass().getDeclaredFields(); //取得所用的变量,包括私有变量
for(Field field : fields) {
Annotation f = getField(field);
if(f!=null){
System.out.println(f.toString()); //打印出:@Text(prompt=内容, size=10)
if(f instanceof Text){
System.out.println(field.getName()+","+field.get(this)); //取得对应的变量名和值,打印出:text,我的测试
Text text = (Text)f; //将f强制转换为Text
System.out.println(text.size()+","+text.prompt());//打印出:10,内容
}
}
}
Method[] methods = getClass().getDeclaredMethods();//取得所用的方法,包括私有方法
for(Method method : methods){
Annotation m = getMethod(method);
if(m!=null){
System.out.println(m.toString()); //打印出:@Submit(value=提交, onclick=)
if(m instanceof Submit){
System.out.println(method.getName()); //取得对应的方法名,打印出:getSubmit
//System.out.println(method.get(this)); //无法取得值,会出异常.
Submit submit = (Submit)m; //将m强制转换为Submit
System.out.println(submit.value()); //打印出:提交
//getSubmit("submit 测试!"); //method.invoke(this,"submit 测试!"); //都打印出:submit 方法!submit 测试!
method.invoke(new Form(),"submit 测试!"); //打印出:submit 方法!submit 测试!
}
}
}
}
public static void main(String args[]) throws IllegalAccessException, InvocationTargetException{
Form f = new Form();
f.text = "我的测试";
f.test();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -