亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java中類似于C語言中Sizeof功能實現(二)

2019-11-18 10:49:31
字體:
來源:轉載
供稿:網友

  在做了所有這些預備之后,下面就是這種圖形遍歷的標準實現:
  public static IObjectPRofileNode profile (Object obj)
  {
  final IdentityHashMap visited = new IdentityHashMap ();
  
  final ObjectProfileNode root = createProfileTree (obj, visited,
  CLASS_METADATA_CACHE);
  finishProfileTree (root);
  
  return root;
  }
  
  private static ObjectProfileNode createProfileTree (Object obj,
  IdentityHashMap visited,
  Map metadataMap)
  {
  final ObjectProfileNode root = new ObjectProfileNode (null, obj, null);
  
  final LinkedList queue = new LinkedList ();
  
  queue.addFirst (root);
  visited.put (obj, root);
  
  final ClassaccessPrivilegedAction caAction =
  new ClassAccessPrivilegedAction ();
  final FieldAccessPrivilegedAction faAction =
  new FieldAccessPrivilegedAction ();
  
  while (! queue.isEmpty ())
  {
  final ObjectProfileNode node = (ObjectProfileNode) queue.removeFirst ();
  
  obj = node.m_obj;
  final Class objClass = obj.getClass ();
  
  if (objClass.isArray ())
  {
  final int arrayLength = Array.getLength (obj);
  final Class componentType = objClass.getComponentType ();
  
  // Add shell pseudo-node:
  final AbstractShellProfileNode shell =
  new ArrayShellProfileNode (node, objClass, arrayLength);
  shell.m_size = sizeofArrayShell (arrayLength, componentType);
  
  node.m_shell = shell;
  node.addFieldRef (shell);
  
  if (! componentType.isPrimitive ())
  {
  // Traverse each array slot:
  for (int i = 0; i < arrayLength; ++ i)
  {
  final Object ref = Array.get (obj, i);
  
  if (ref != null)
  {
  ObjectProfileNode child =
  (ObjectProfileNode) visited.get (ref);
  if (child != null)
  ++ child.m_refcount;
  else
  {
  child = new ObjectProfileNode (node, ref,
  new ArrayIndexLink (node.m_link, i));
  node.addFieldRef (child);
  
  queue.addLast (child);
  visited.put (ref, child);
  }
  }
  }
  }
  }
  else // the object is of a non-array type
  {
  final ClassMetadata metadata =
  getClassMetadata (objClass, metadataMap, caAction, faAction);
  final Field [] fields = metadata.m_refFields;
  
  // Add shell pseudo-node:
  final AbstractShellProfileNode shell =
  new ObjectShellProfileNode (node,
  metadata.m_primitiveFieldCount,
  metadata.m_refFields.length);
  shell.m_size = metadata.m_shellSize;
  
  node.m_shell = shell;
  node.addFieldRef (shell);
  
  // Traverse all non-null ref fields:
  for (int f = 0, fLimit = fields.length; f < fLimit; ++ f)
  {
  final Field field = fields [f];
  
  final Object ref;
  try // to get the field value:
  {
  ref = field.get (obj);
  }
  catch (Exception e)
  {
  throw new RuntimeException ("cannot get field [" +
  field.getName () + "] of class [" +
  field.getDeclaringClass ().getName () +
  "]: " + e.toString ());
  }
  
  if (ref != null)
  {
  ObjectProfileNode child =
  (ObjectProfileNode) visited.get (ref);
  if (child != null)
  ++ child.m_refcount;
  else
  {
  child = new ObjectProfileNode (node, ref,
  new ClassFieldLink (field));
  node.addFieldRef (child);
  
  queue.addLast (child);
  visited.put (ref, child);
  }
  }
  }
  }
  }
  
  return root;
  }
  
  private static void finishProfileTree (ObjectProfileNode node)
  {
  final LinkedList queue = new LinkedList ();
  IObjectProfileNode lastFinished = null;
  
  while (node != null)
  {
  // Note that an unfinished nonshell node has its child count
  // in m_size and m_children[0] is its shell node:
  
  if ((node.m_size == 1) (lastFinished == node.m_children [1]))
  {
  node.finish ();
  lastFinished = node;
  }
  else
  {
  queue.addFirst (node);
  for (int i = 1; i < node.m_size; ++ i)
  {
  final IObjectProfileNode child = node.m_children [i];
  queue.addFirst (child);
  }
  }
  
  if (queue.isEmpty ())
  return;
  else
  node = (ObjectProfileNode) queue.removeFirst ();
  }
  }
  
  該代碼是上一篇java Q&A, "Attack of the Clones."使用的"通過反射克隆"實現的遠親。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人av中文字幕| 亚洲a∨日韩av高清在线观看| 国产精品丝袜久久久久久不卡| 亚洲成人精品av| 精品国产精品三级精品av网址| 亚洲国产精品成人一区二区| 亚洲а∨天堂久久精品喷水| 日韩福利视频在线观看| 91青草视频久久| 国产精品私拍pans大尺度在线| 国产精品入口日韩视频大尺度| 美日韩丰满少妇在线观看| 91欧美日韩一区| 欧美成人免费全部| 日本一区二区在线播放| 欧美日韩裸体免费视频| 日本久久亚洲电影| 久久精品国产久精国产一老狼| 日韩av免费在线播放| 亚洲精品aⅴ中文字幕乱码| 色99之美女主播在线视频| 国产精品小说在线| 7m精品福利视频导航| 亚洲国产精品大全| 在线视频亚洲欧美| 欧美亚洲日本网站| 高清欧美一区二区三区| 不卡av在线播放| 国产成人精品亚洲精品| 一道本无吗dⅴd在线播放一区| 欧美激情乱人伦| 九九九久久国产免费| 亚洲欧美成人一区二区在线电影| 久久精品视频在线| 97高清免费视频| 欧美国产日产韩国视频| 一区二区三区视频观看| 亚洲最大av网| 亚洲国产精品成人va在线观看| 欧美日韩国产一中文字不卡| 中文字幕在线亚洲| 91精品国产综合久久香蕉最新版| 国产aⅴ夜夜欢一区二区三区| 日韩av黄色在线观看| 国产精品美女无圣光视频| 国产精品麻豆va在线播放| 欧美日韩在线免费| 亚洲欧美成人一区二区在线电影| 在线观看国产成人av片| 亚洲成色777777在线观看影院| www.99久久热国产日韩欧美.com| 亚洲一区二区日本| 国产精品第8页| 亚洲性日韩精品一区二区| 亚洲国产美女久久久久| 久99九色视频在线观看| 亚洲尤物视频网| 超碰精品一区二区三区乱码| 国产精品久久久久免费a∨| 91欧美日韩一区| 日韩在线高清视频| 91免费国产网站| 久久亚洲精品毛片| 91精品国产乱码久久久久久蜜臀| 欧美日韩色婷婷| 91色视频在线导航| 亚洲第一福利网| 国产91精品视频在线观看| 国产成人精品在线视频| 国产91在线高潮白浆在线观看| 成人伊人精品色xxxx视频| 欧美成人免费全部| 亚洲欧美日韩在线一区| 两个人的视频www国产精品| 韩国三级电影久久久久久| 91经典在线视频| 日韩av电影中文字幕| 久久久精品免费视频| 国产精品久久久久久久久免费看| 欧美一级片在线播放| 久久天天躁狠狠躁夜夜躁| 国产婷婷色综合av蜜臀av| 国产成人综合久久| 日韩av影视综合网| 国产精品久久久久久久天堂| 疯狂做受xxxx高潮欧美日本| 欧美大尺度电影在线观看| 欧美老少做受xxxx高潮| 日韩在线观看免费高清| yellow中文字幕久久| 亚洲成av人片在线观看香蕉| 亚洲午夜女主播在线直播| 欧美中文字幕在线播放| 欧美日韩国产综合视频在线观看中文| 精品国产乱码久久久久酒店| 国产精品久久久久国产a级| 97热在线精品视频在线观看| 日韩精品极品毛片系列视频| 2019av中文字幕| 国语自产精品视频在线看| 98精品国产高清在线xxxx天堂| 欧美日韩久久久久| 日本精品一区二区三区在线播放视频| 亚洲一区亚洲二区| 亚洲高清在线观看| 亚洲香蕉成视频在线观看| 成人免费视频在线观看超级碰| 这里只有精品在线观看| 日韩大胆人体377p| 欧美一级黄色网| 国产欧美日韩综合精品| 日韩欧美一区二区三区久久| 日韩中文字幕在线观看| 欧美性极品xxxx做受| 欧美日韩综合视频| 亚洲片在线观看| 国产精品手机播放| 欧美极品美女视频网站在线观看免费| 国产97在线亚洲| 欧美精品中文字幕一区| 欧美猛交免费看| 欧美极品少妇xxxxⅹ裸体艺术| 成人在线中文字幕| 最近2019中文字幕在线高清| 国产精品欧美风情| 国产成人精品电影久久久| 亚洲图片制服诱惑| 国产午夜精品一区二区三区| 中文字幕久久久av一区| 亚洲精品一区二三区不卡| 91精品视频观看| 国产精品成人一区| 日韩av不卡电影| 91亚洲精品一区二区| 国产精品久久久久久久午夜| 狠狠躁夜夜躁久久躁别揉| 欧美日韩亚洲一区二区三区| 成人免费观看a| 在线免费看av不卡| 69影院欧美专区视频| 日韩美女免费观看| 日本久久亚洲电影| 欧美激情欧美激情在线五月| 久久久久久久久国产精品| 欧美日韩性视频在线| 欧美疯狂性受xxxxx另类| 91免费在线视频网站| 26uuu国产精品视频| 精品亚洲一区二区三区在线播放| 2023亚洲男人天堂| 亚洲精品一区在线观看香蕉| 中文字幕亚洲欧美| 亚洲第一区在线| 国产精品高潮呻吟久久av野狼| 久久国产精品视频| 亚洲精品99久久久久中文字幕| 日韩欧美精品免费在线| 亚洲激情 国产| 中文字幕av一区中文字幕天堂| 中文字幕亚洲在线| 国产精品欧美激情在线播放| x99av成人免费| 国产精品国产三级国产aⅴ9色| 久久久国产一区二区|