程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 使用反射機制確定基本數據類型屬性

使用反射機制確定基本數據類型屬性

編輯:JAVA編程入門知識

  Java反射機制提供了一種強大的應用程序接口來幫助我們在運行時檢測和執行對象上的操作。該機制答應程序員審閱一個未知對象,並且獲得它的屬性,例如對象上的方法,JavaBean的屬性以及繼續關系等。
  
  Java中有兩種類型的值,一種是類類型,它把對象的屬性定義在一個類中。類類型是面向對象結構的基本組成部分。第二種類型的值是基本數據類型。反射類型通常用於類類型,但是,其實它也可以很方便應用到Java的基本類型上。
  
  Java中的基本類型繼續自基於C的語法,其中包括boolean、byte、short、int、long、float、double、char等類型。
  
  每一個基本類型都與一個java類相關聯。這些類封裝在java.lang.package中,這個package默認導入所有的java源代碼文件。
  
  在java.lang包的基本數據類型包裝類中,不是像定義對象那樣用類(class)而是用一些非凡的常量來表示基本數據的類型(type).例如,是常量Interger.TYPE而不是類Integer表示int類型,是Byte.TYPE常量表示了byte類型.這種方式使得為一個未知的JavaBean創建通用的組件成為可能.
  
  下面是一個例子片斷,其作用是根據一個傳來的HttpServletRequest中設置JavaBean中的值。
  // thrown
  Exceptions are left out for ease of reading...
  Object bean = ....
  BeanInfo bi = Introspector.getBeanInfo(bean.getClass( ));
  PropertyDescriptor[ ] pds = bi.getPropertyDescriptors( );
  for(int i=0; i
  String name = pds[i].getName( );
  String value = request.getParameter(name);
  if(value != null) {
  Method method = pds[i].getWriteMethod(
  );
  value = convert(value,
  method.getParameterType( )[0]);
  method.invoke(bean, new Object[
  ] { value } );
  }
  )
  Convert方法中缺少的代碼定義如下:
  public Object
  convert(Object value, Class type) {
  String name = type.getName( );
  if( "java.lang.String.equals(name) ) {
  return value.toString();
  } else
  if( "java.lang.Long".equals(name) (type ==
  Long.TYPE) ) {
  return convertToLong(value);
  } else
  if( "java.lang.Integer".equals(name) (type
  == Integer.TYPE) ) {
  return convertToInteger(value);
  } else
  .....
  }


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved