当前位置: 首页 > news >正文

网站选项卡网站制作现状解决方案

网站选项卡,网站制作现状解决方案,云南网站设计外包,合肥网站建设-中国互联我们知道,Spring中大量使用了反射机制#xff0c;那么究竟是什么地方使用了呢#xff1f;就从源头说起吧。 一 反射源头Class类 对类的概念我们已经非常熟悉了。比如可以有Student这个类#xff0c;Person这个类。但是我们要知道#xff0c;有一个叫Class的类#xff0c;… 我们知道,Spring中大量使用了反射机制那么究竟是什么地方使用了呢就从源头说起吧。   一  反射源头Class类 对类的概念我们已经非常熟悉了。比如可以有Student这个类Person这个类。但是我们要知道有一个叫Class的类它是反射的源头。   正常方式通过完整的类名—通过new实例化—取得实例化对象 反射方式实例化对象—getClass()方法—通过完整的类名   一个简单的例子 package cn.classes; public class OneClass { } package cn.test; import cn.classes.OneClass; public class Test {     public static void main(String[] args) {         OneClass c new OneClass();         System.out.println(c.getClass().getName());   } } 输出结果cn.classes.OneClass 我们需要使用反射就要获得Class这个类有三种方法 package cn.classes; public class OneClass { } import cn.classes.OneClass; public class Test { public static void main(String[] args) {      Class? c1 null;      Class? c2 null;      Class? c3 null;      try      {          // 方法一forName(重要)          c1 Class.forName(cn.classes.OneClass);    }      catch (ClassNotFoundException e)      {          e.printStackTrace();     }      // 方法二      c2 new OneClass().getClass();        // 方法三      c3 OneClass.class;      System.out.println(c1.getName());      System.out.println(c2.getName());      System.out.println(c3.getName());    } } 输出结果cn.classes.OneClass     二 利用Class这个类实例化类 ①无参构造 package cn.classes; public class Person {     private String name;     private int age;      .............省略getter,setter..............     Override     public String toString()     {           return Person [name name , age age ];     } } package cn.test; import cn.classes.Person; public class Test {     // 这样做必须在类中有一个空构造方法     public static void main(String[] args)     {               Class? c null;                try                {                       c Class.forName(cn.classes.Person);                      Person p (Person)c.newInstance();                      p.setName(xy);                       p.setAge(20);                       System.out.println(p);                }                catch (Exception e)               {                       e.printStackTrace();                }        } }   ②有参构造 package cn.classes; public class Person {     private String name;     private int age;      public Person(Stringname,int age){                  this.name name;                  this.age age;     }     .............省略getter,setter..............         Override     public String toString()     {           return Person [name name , age age ];     } } package cn.test; import java.lang.reflect.Constructor; import cn.classes.Person; public class Test {     // 如果没有一个空构造方法     public static void main(String[] args)     {           Class? c null;           try           {                   c Class.forName(cn.classes.Person);                  Constructor? con c.getConstructors(String.class,int.class);                  Person p (Person)con.newInstance(xy,20);                  System.out.println(p);           }           catch (Exception e)          {                 e.printStackTrace();          }       } }   三 Spring中使用Class实例化 bean.xml bean idid classcom.xy.Student /   Spring将采用的代码创建代码Java实例Class c Class.forName(com.xy.Student); Object bean c.newInstance();     四 Class类调用方法 package cn.classes; public class Person {     public void add()     {            System.out.println(add);     }     public void addWithParameters(String name, int age)     {             System.out.println(add带参数方法 name age);     } } package cn.test; import java.lang.reflect.Method; public class Test {     public static void main(String[] args)     {              Class? c1 null;              try              {                    c1 Class.forName(cn.classes.Person);                    // 不带参数的方法调用                    Method m c1.getMethod(add);                   m.invoke(c1.newInstance());                      // 带参数方法调用                    Method m1 c1.getMethod(addWithParameters, String.class, int.class);                   m1.invoke(c1.newInstance(), xy, 22);            }             catch (Exception e)             {                    e.printStackTrace();             }     } }     五 Class获得gettersetter方法 Class这个类可以获得类的很多信息比如获得该类的接口构造函数属性方法等。我们来看如何获得gettersetter方法。 package cn.classes; public class Person {     private String name;     private int age;     省略getter,setter    }   package cn.test; import java.lang.reflect.Method; public class Test {     public static void main(String[] args)     {            Class? c1 null;            Object obj null;            try            {                      c1 Class.forName(cn.classes.Person);                      obj c1.newInstance();                      setter(obj, name, xy, String.class);                      setter(obj, age, 20, int.class);                      getter(obj, name);                      getter(obj, age);            }            catch (Exception e)             {                     e.printStackTrace();             }    }    /**     * param obj要操作的对象     * param att要操作的属性     * param value要设置的属性内容     * param type要设置的属性类型     */     public static void setter(Object obj, String att, Object value, Class? type)     {          try          {             // 得到setter方法           Method m obj.getClass().getMethod(set initStr(att), type);           m.invoke(obj, value);          }          catch (Exception e)          {           e.printStackTrace();          }    }    /**     * param obj要操作的对象     * param att要操作的属性     */    public static void getter(Object obj, String att)    {         try         {                // 得到getter方法                Method m obj.getClass().getMethod(get initStr(att));                System.out.println(m.invoke(obj));         }        catch (Exception e)        {                e.printStackTrace();        }    }    public static String initStr(String oldStr)    {          String newStr oldStr.substring(0, 1).toUpperCase() oldStr.substring(1);          return newStr;    } }   六 Spring调用getter,setter方法 我们以setter注入例子 bean.xml bean idid classcom.xy.Student     property namestuName valuexy //bean Spring将采用的代码创建代码Java实例并注入值Class c Class.forName(com.xy.Student); Object bean c.newInstance(); 通过一些操作获取对stuName对应的setter方法名String setname set StuName; Method method c.getMehod(setname,String.Class); method.invoke(bean,xy); 这样就完成了最基本的注入操作。当然Spring还可以通过构造函数进行注入。这样就参考第二点有参构造的Class的使用。 Class还可以访问Annotation这样就Spring使用注解的时候可以完成注入的功能。   七 总结 反射的内容还是很多的需要系统的学习。当然Spring也是。 本文转自IT徐胖子的专栏博客51CTO博客原文链接http://blog.51cto.com/woshixy/1060263如需转载请自行联系原作者 woshixuye111
http://wiki.neutronadmin.com/news/184860/

相关文章:

  • 公司的网站怎么建设360建筑网忘记登入密码了怎么办
  • 通过邮箱查注册网站网络推广是什么职位
  • 商城网站的功能学网站开发多少钱
  • seo矩阵培训东莞债优化
  • 查看网站外链代码wordpress 还原
  • 怎样建设网站是什么做网站的困难
  • 网站模板开发主要作用网站页面创意
  • 专业做财务公司网站济南市住房和城乡建设局官网
  • 华为云助力企业网站安全保障优秀企业网站案例
  • 网站seo工具wordpress 下载文件
  • 合肥有哪些做网站的公司wordpress前端
  • 网站开发的程序平台重点实验室网站建设的意义
  • a8新媒体的案例免费seo快速收录工具
  • 超大型网站建设购物网站开发历史
  • 郴州网站建设培训个人网站建设与企业网站
  • iis配置网站phpwordpress全站同一个标题
  • 如何建设网站方便后期维护北京口碑最好的教育机构
  • 成都网站建设益友网络wordpress手机号码登录
  • 成绩查询网站开发土特产网站模板 织梦
  • 专业服务网页制作上海网站seo外包
  • 建立个人网站多少钱和卫通app下载
  • 电商网站功能设计用jquery制作网页
  • 网站的特效代码厦门网站建设那家好
  • 秦皇岛做网站的公司哪家好政务网站建设存在问题
  • 做网站常见问题模板免备案的网站空间
  • 国土局网站建设经验上海搭建工厂
  • 企业网站页脚模版免费网站
  • 重庆建设工程网站wordpress调用留言
  • 网站建设方案书怎么签字上传制作一个网站就等于制作一个网页
  • 网域高科学校网站管理系统漏洞wordpress 含演示数据库