zoukankan      html  css  js  c++  java
  • Tomcat底层通过全类名创建对象的实现

    示例:

     1      //com.neuedu.baier.entity.User为User类的全类名
     2         //要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
     3         Class<?> user=Class.forName("com.neuedu.baier.entity.User");
     4         //调用Class下的newInstance( )静态方法来实例化对象,以便操作
     5         Object object = user.newInstance();
     6         //getMethod获取的是类的所有共有方法,,下面代码表示获取setName方法,参数为String
     7         Method method = user.getMethod("setName", String.class);
     8         //调用获取的setName方法
     9         method.invoke(object, "张三");
    10         
    11         //获取getName方法
    12         Method method2 = user.getMethod("getName");
    13         //调用getName方法,参数表示调用的对象
    14         Object name = method2.invoke(object);
    15         System.out.println(name);

      1、Class.forName(xxx.xx.xx)返回的是一个类Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。

      2、Class.forName(“”)返回的是类。Class.forName(“”).newInstance()返回的是object

      3、new与newInstance( )的区别:

          newInstance( )是一个方法,而new是一个关键字

          Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用 new关键字生成对象没有这个限制

          newInstance(): 弱类型,低效率,只能调用无参构造。new: 强类型,相对高效,能调用任何public构造

      4、newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。

     几个快捷键:

      1、方法返回值:在方法后,按ctrl+1,添加与方法返回类型相同的变量

      2、全类名复制:点开该类的java文件箭头,在class文件上右键—>Copy Qualified Name           

  • 相关阅读:
    Win10 UWP Tile Generator
    Win10 BackgroundTask
    UWP Tiles
    UWP Ad
    Win10 build package error collections
    Win10 八步打通 Nuget 发布打包
    Win10 UI入门 pivot multiable DataTemplate
    Win10 UI入门 导航滑动条 求UWP工作
    UWP Control Toolkit Collections 求UWP工作
    Win10 UI入门 SliderRectangle
  • 原文地址:https://www.cnblogs.com/java-zmj/p/7834474.html
Copyright © 2011-2022 走看看