⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form.java

📁 java相关的j2me,j2se的一些相关资料
💻 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 + -