日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何將Jython類(lèi)型轉(zhuǎn)換為Java類(lèi)型

Jython類(lèi)型映射 Java類(lèi)型

有時(shí)會(huì)需要在 Jython 中創(chuàng)建純 Java 對(duì)象(例如,在需要?jiǎng)?chuàng)建跨網(wǎng)絡(luò)發(fā)送給基于 Java 的服務(wù)器的對(duì)象、或者在需要向一個(gè)類(lèi)型敏感的 Java 服務(wù)(如帶有 Swing 表格單元值的服務(wù))傳遞對(duì)象時(shí))。要將 Jython類(lèi)型轉(zhuǎn)換為 Java類(lèi)型(以及相反),使用下面例子中的函數(shù):

 
 
 
  1. def mapMapFromJava (map):   
  2.     """ Convert a Map to a Dictionary. """  
  3.     result = {}   
  4.     iter = map.keySet().iterator()   
  5.     while iter.hasNext():   
  6.         key = iter.next()   
  7.         result[mapFromJava(key)] = mapFromJava(map.get(key))   
  8.     return result   
  9.   
  10. def mapCollectionFromJava (coll):   
  11.     """ Convert a Collection to a List. """  
  12.     result = []   
  13.     iter = coll.iterator();   
  14.     while iter.hasNext():   
  15.         result.append(mapFromJava(iter.next()))   
  16.     return result   
  17.   
  18. def mapFromJava (object):   
  19.     """ Convert a Java type to a Jython type. """  
  20.     if object is None: return object   
  21.     if   isinstance(object, util.Map):           
  22.         result = mapMapFromJava(object)   
  23.     elif isinstance(object, util.Collection):    
  24.         result = mapCollectionFromJava(object)   
  25.     else:                                        
  26.         result = object   
  27.     return result   
  28.   
  29. def mapSeqToJava (seq):   
  30.     """ Convert a sequence to a Java ArrayList. """  
  31.     result = util.ArrayList(len(seq))   
  32.     for e in seq:   
  33.         result.add(mapToJava(e));   
  34.     return result   
  35.   
  36. def mapDictToJava (dict):   
  37.     """ Convert a Dictionary to a Java HashMap. """  
  38.     result = util.HashMap()   
  39.     for key, value in dict.items():   
  40.         result.put(mapToJava(key), mapToJava(value))   
  41.     return result   
  42.   
  43. def mapToJava (object):   
  44.     """ 將Jython類(lèi)型轉(zhuǎn)換為Java類(lèi)型 """  
  45.     if object is None: return object   
  46.     t = type(object)   
  47.     if   t == TupleType or t == ListType:     
  48.         result = mapSeqToJava(object)   
  49.     elif t == DictType:     
  50.         result = mapDictToJava(object)   
  51.     else:                   
  52.         result = object   
  53.     return result    

在使用了 mapToJava 后,這些類(lèi)型可以寫(xiě)為java.io.ObjectOutputStream。從 java.io.ObjectInputStream 讀出一個(gè)對(duì)象后,可以用 mapFromJava 將對(duì)象轉(zhuǎn)換回 Jython 類(lèi)型。

注意這些方法支持有限的、但是廣泛使用的一組內(nèi)置 Jython類(lèi)型。Jython 自動(dòng)轉(zhuǎn)換類(lèi)似值的類(lèi)型,如數(shù)字和字符串。不支持用戶(hù)定義的類(lèi)。

映射Java類(lèi)型

繼續(xù)這個(gè)例子,下面顯示了繼續(xù)使用上一屏討論的映射函數(shù)的情況:

 
 
 
  1. data = (1,2,3, [1,2,3], [c for c in "Hello!"], "Hello!", {1:'one', 2:'two'})
  2. print "data:", data
  3. toJava = mapToJava(data)
  4. print "toJava:", toJava
  5. fromJava = mapFromJava(toJava)
  6. print "fromJava:", fromJava
  7. print
  8. print "type(%s)=%s" % ("data", type(data))
  9. print "type(%s)=%s" % ("toJava", type(toJava))
  10. print "type(%s)=%s" % ("fromJava", type(fromJava))

打印:

 
 
 
  1. data: (1, 2, 3, [1, 2, 3], ['H', 'e', 'l', 'l', 'o', '!'], 'Hello!', \
  2. {2: 'two', 1: 'one'})
  3. toJava: [1, 2, 3, [1, 2, 3], [H, e, l, l, o, !], Hello!, {2=two, 1=one}]
  4. fromJava: [1, 2, 3, [1, 2, 3], ['H', 'e', 'l', 'l', 'o', '!'], 'Hello!', \
  5. {2: 'two', 1: 'one'}]
  6. type(data)=org.python.core.PyTuple
  7. type(toJava)=org.python.core.PyJavaInstance
  8. type(fromJava)=org.python.core.PyList

注意 PyTuple變成了 PyJavaInstance,然后是 PyList.還要注意 toJava 表單的格式不一樣了。這是因?yàn)樗且粋€(gè) Java 對(duì)象,并且它是由 Java toString() 方法而不是 Jython repr()函數(shù)打印的。Jython 將 PyJavaInstance 這種類(lèi)型原樣傳遞給 Java API。 ***,注意 data 和 fromJava 值是相同的,只不過(guò)元組現(xiàn)在是一個(gè)相應(yīng)的列表。


網(wǎng)站題目:如何將Jython類(lèi)型轉(zhuǎn)換為Java類(lèi)型
文章源于:http://m.5511xx.com/article/dhedchp.html