zoukankan      html  css  js  c++  java
  • 获得类对象的四种方法

    转载自: http://duben.iteye.com/blog/367218

    在学习反射机制时,总结一下获得类对象方式: 第一种方式:通过类本身来获得对象

    Java代码  收藏代码
    1. Class classname =  this .getClass();  

    第二种方式:通过子类的实例获取父类对象

    Java代码  收藏代码
    1. ClassName cn =  new  ClassName();  
    2. UserClass = cn.getClass();  
    3. Class SubUserClass = UserClass.getSuperclass();   

    第三种方式:通过类名加.class获取对象

      

    Java代码  收藏代码
    1. Class ForClass = **.**.ClassName. class ;(类在包中的路径加. class )  

    第四种方式:通过类名的字符串获取对象

    Java代码  收藏代码
    1. Class ForName = Class.forName( "**.**.ClassName" );  

       这种方式在jdbc中常用到。


    举例: 1. 通过类名字字符串得到类的实例, 调用方法

    1. import java.lang.reflect.Constructor;  
    2. import java.lang.reflect.Method;  
    3. import java.lang.reflect.Modifier;  
    4. import java.text.SimpleDateFormat;  
    5. import java.util.Date;  
    6. import java.util.GregorianCalendar;  
    7. import java.util.List;  
    8. import jxl.biff.Type;  
    9.   
    10. import org.springframework.context.ApplicationContext;  
    11. import com.dongxin.dxcs.bean.SysCode;  
    12. import com.dongxin.dxcs.common.ApplicationConfig;  
    13. import com.dongxin.dxcs.common.DateUtil;  
    14. import com.dongxin.dxcs.modeleinit.bizlogic.ModeleinitBiz;  
    15. import com.dongxin.dxcs.bean.*;  
    16. public class MainTest1 {  
    17. public MainTest1(){  
    18.    Class[] sl = {String.class};//将要SET的数据类型   和setPrice中的Price类型匹配  
    19.    Class[] fl = {Float.class};  
    20.    Class[] il = {Integer.class};  
    21.    try{  
    22.     Class c =Class.forName("com.dongxin.dxcs.bean.DatStock5");//注册类  
    23.     Object obj = c.newInstance();//获得该类的实体对象,空构造法方法  
    24.     Object[]   parameter1   = {new Float(4.68f)};//设置该类的setCode(String code)方法的参数  
    25.     c.getMethod("setPrice", fl).invoke(obj, parameter1);//调用setCode(String code)方法  
    26.     System.out.println(c.getMethod("getPrice").invoke(obj));//调用getCode()方法,并打印code属性的值  
    27.      
    28.    }catch (Exception e){  
    29.     e.printStackTrace();  
    30.    }  
    31. }  
    32.   
    33. public static void main(String[] args) {  
    34.     
    35.    MainTest1 frame = new MainTest1();  
    36. }  
    37. }  
  • 相关阅读:
    ECharts中悬浮图标tooltie多行显示已解决
    Linux中的$符号的三种常见用法
    Shell逐行读取文件的4种方法
    rename
    nodejs安装
    “ArcGIS Desktop遇到严重的应用程序错误,无法继续”的解决方案
    跟我一起学Redis之Redis持久化必知必会
    微服务很香--麻辣味,但要慢慢消化
    跟我一起学Redis之Redis事务简单了解一下
    跟我一起学.NetCore之EF Core 实战入门,一看就会
  • 原文地址:https://www.cnblogs.com/heartstage/p/3409658.html
Copyright © 2011-2022 走看看