zoukankan      html  css  js  c++  java
  • java对象实例化

    JAVA类,只要知道了类名(全名)就可以创建其实例对象,通用的方法是直接使用该类提供的构造方法,如

    NewObject o = new NewObject();

    NewObject o = new NewObject("test");

    NewObject o = new NewObject(new String[]{"aaa","bbb"});

    除此之外,还可以利用java.lang.Class<T>类来实现JAVA类的实例化。

    1、空构造方法

    如果类有空构造方法,如下面的类

    public class NewObject
    {
     String name;
     
     public NewObject(String[] name)
     {
      this.name = name[0];

         System.out.println(“ the object is created!”);
     }
     
     public void write()
     {
      System.out.println(this.name);
     }
    }

    使用以下代码可实现实例化:

    NewObject no = null;
     try
       {
        no = (NewObject)Class.forName(className).newInstance();

       no.write();
       }
       catch (InstantiationException e)
       {
        e.printStackTrace();
       }
       catch (IllegalAccessException e)
       {
        e.printStackTrace();
       }
       catch (ClassNotFoundException e)
       {
        e.printStackTrace();
       }

    2、带参数构造方法

    public class NewObject
    {
     String name;
     
     public NewObject()
     {

         System.out.println(“ the object is created!”);
     }
     
     public void write()
     {
      System.out.println(“”);
     }
    }

    使用以下代码可实现实例化:

    try
       {
        no = (NewObject)Class.forName(className).getConstructor(String.class).newInstance(names);

    //no = (NewObject)Class.forName(className).getConstructor(new Object[]{String.class}).newInstance(names);
       }
       catch (IllegalArgumentException e)
       {
        e.printStackTrace();
       }
       catch (SecurityException e)
       {
        e.printStackTrace();
       }
       catch (InstantiationException e)
       {
        e.printStackTrace();
       }
       catch (IllegalAccessException e)
       {
        e.printStackTrace();
       }
       catch (InvocationTargetException e)
       {
        e.printStackTrace();
       }
       catch (NoSuchMethodException e)
       {
        e.printStackTrace();
       }
       catch (ClassNotFoundException e)
       {
        e.printStackTrace();
       }

    3、带数组参数构造方法

    public class NewObject
    {
     String name;
     
     public NewObject(String name)
     {
      this.name = name; 

        System.out.println(“ the object is created!”);
     }
     
     public void write()
     {
      System.out.println(this.name);    
     }
    }

    使用以下代码可实现实例化:

    try
       {
        Constructor[] cs;
        cs = Class.forName(className).getConstructors();
        Constructor cc = Class.forName(className).getConstructor(String[].class);
        no = (NewObject)cc.newInstance(new Object[]{names});
       }
       catch (SecurityException e)
       {
        e.printStackTrace();
       }
       catch (ClassNotFoundException e)
       {
        e.printStackTrace();
       }
       catch (NoSuchMethodException e)
       {
        e.printStackTrace();
       }
       catch (IllegalArgumentException e)
       {
        e.printStackTrace();
       }
       catch (InstantiationException e)
       {
        e.printStackTrace();
       }
       catch (IllegalAccessException e)
       {
        e.printStackTrace();
       }
       catch (InvocationTargetException e)
       {
        e.printStackTrace();
       }

  • 相关阅读:
    struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)
    Android应用如何开机自启动、自启动失败原因
    android操作ini工具类
    C++#define的用法(含特殊)
    c指针
    WP7备注(34)(UpdateSourceTrigger|ValidatesOnExceptions|NotifyOnValidationError)
    WP7备注(30)(数据绑定基本)
    WP7备注(38)(VisualStateManager)
    WP7备注(39)(ResourceDictionary)
    WP7备注(35)(Vector Graphics|Raster Graphics)
  • 原文地址:https://www.cnblogs.com/johnnyflute/p/4078265.html
Copyright © 2011-2022 走看看