注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

使用反射报异常:object is not an instance of declaring class解决方案  

2013-01-09 12:37:18|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在使用反射执行一个方法时常遇到object is not an instance of declaring class的异常,如下代码:view plaincopy to clipboardprint?

Java代码 

  1. import java.lang.reflect.Method;     
  2. import java.text.SimpleDateFormat;     
  3. import java.util.Date;     
  4.     
  5.     
  6.     
  7. import cn.rdt.famework.frame.config.FrameConstant;     
  8.     
  9. public class PrimaryKeyUtils {     
  10.  //     
  11.     public    synchronized String getPrimaryKey() {     
  12.         String pk = "";     
  13.         StringBuffer primaryKey = new StringBuffer(new SimpleDateFormat(     
  14.                 "yyMMddHHmmssSSS").format(new Date()));     
  15.         int tpk = FrameConstant.PRIMARY_KEY;     
  16.         if (tpk < 9999) {     
  17.             tpk++;     
  18.         } else {     
  19.             tpk = 1000;     
  20.         }     
  21.         FrameConstant.PRIMARY_KEY = tpk;     
  22.         pk = primaryKey.append(String.valueOf(tpk)).toString();     
  23.         primaryKey = null;     
  24.           
  25.         return pk;     
  26.     }     
  27.     
  28.     public String GetPrimaryKey(String mothed){     
  29.         String primaryKey = "";     
  30.         try {     
  31.             Class c = PrimaryKeyUtils.class;     
  32.             Method m = c.getMethod(mothed,new Class[]{});     
  33. //          Object obj=c.newInstance();     
  34.             m.invoke(mothed,null);     
  35.             primaryKey = String.valueOf(m.invoke(c.newInstance() ,new Object[]{}));     
  36.         } catch (Exception e) {     
  37.             e.printStackTrace();     
  38.         }      
  39.         return primaryKey;     
  40.     }     
  41.     public static void main(String[] args) {     
  42.           
  43.         PrimaryKeyUtils primaryKey = new PrimaryKeyUtils();     
  44.         System.out.println(primaryKey.GetPrimaryKey("getPrimaryKey"));     
  45.     }     
  46. }    
  47. import java.lang.reflect.Method;  
  48. import java.text.SimpleDateFormat;  
  49. import java.util.Date;  
  50.   
  51.   
  52.   
  53. import cn.rdt.famework.frame.config.FrameConstant;  
  54.   
  55. public class PrimaryKeyUtils {  
  56.  //  
  57.     public    synchronized String getPrimaryKey() {  
  58.         String pk = "";  
  59.         StringBuffer primaryKey = new StringBuffer(new SimpleDateFormat(  
  60.                 "yyMMddHHmmssSSS").format(new Date()));  
  61.         int tpk = FrameConstant.PRIMARY_KEY;  
  62.         if (tpk < 9999) {  
  63.             tpk++;  
  64.         } else {  
  65.             tpk = 1000;  
  66.         }  
  67.         FrameConstant.PRIMARY_KEY = tpk;  
  68.         pk = primaryKey.append(String.valueOf(tpk)).toString();  
  69.         primaryKey = null;  
  70.        
  71.         return pk;  
  72.     }  
  73.   
  74.     public String GetPrimaryKey(String mothed){  
  75.         String primaryKey = "";  
  76.         try {  
  77.             Class c = PrimaryKeyUtils.class;  
  78.             Method m = c.getMethod(mothed,new Class[]{});  
  79. //          Object obj=c.newInstance();  
  80.             m.invoke(mothed,null);  
  81.             primaryKey = String.valueOf(m.invoke(c.newInstance() ,new Object[]{}));  
  82.         } catch (Exception e) {  
  83.             e.printStackTrace();  
  84.         }   
  85.         return primaryKey;  
  86.     }  
  87.     public static void main(String[] args) {  
  88.        
  89.         PrimaryKeyUtils primaryKey = new PrimaryKeyUtils();  
  90.         System.out.println(primaryKey.GetPrimaryKey("getPrimaryKey"));  
  91.     }  
  92. }  
  93.    
  94.   
  95.  第34行会报object is not an instance of declaring class错 对象不是声明类的一个实例。解决办法如下:  
  96.   
  97. 第一种:反射执行的方法 getPrimaryKey() 改成静态的  
  98.   
  99. 第二种:在执行方法前先实例化类。m.invoke(mothed,null)改为m.invoke(c.newInstance(),null)或者m.invoke(new PrimaryKeyUtils(),null)  
  100.   
  101.   
  102. 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yeson6/archive/2011/01/14/6138963.aspx 





  103.  


  评论这张
 
阅读(3629)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016