⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debugweaklist.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   DebugWeakList.java

package org.gudy.azureus2.core3.util;

import java.lang.ref.WeakReference;
import java.util.*;

// Referenced classes of package org.gudy.azureus2.core3.util:
//			Constants, Debug

public class DebugWeakList
{
	protected class WeakListIterator
		implements Iterator
	{

		private Iterator it;
		private Object pending_result;
		private Object last_result;
		final DebugWeakList this$0;

		public boolean hasNext()
		{
			if (pending_result != null)
				return true;
			while (it.hasNext()) 
			{
				Object entry[] = (Object[])(Object[])it.next();
				WeakReference wr = (WeakReference)entry[1];
				Object target = wr.get();
				if (target == null)
				{
					it.remove();
					logRemoved((Class)entry[0]);
				} else
				{
					pending_result = target;
					return true;
				}
			}
			return false;
		}

		public Object next()
			throws NoSuchElementException
		{
			if (pending_result == null)
				hasNext();
			if (pending_result == null)
			{
				throw new NoSuchElementException();
			} else
			{
				last_result = pending_result;
				pending_result = null;
				return last_result;
			}
		}

		public void remove()
		{
label0:
			{
				Object lr = last_result;
				if (lr == null)
					throw new NoSuchElementException();
				last_result = null;
				if (pending_result == null)
				{
					it.remove();
					break label0;
				}
				Iterator temp_it = list.iterator();
				Object target;
				do
				{
					if (!temp_it.hasNext())
						break label0;
					Object entry[] = (Object[])(Object[])temp_it.next();
					WeakReference wr = (WeakReference)entry[1];
					target = wr.get();
				} while (target != lr);
				it = temp_it;
				it.remove();
				return;
			}
		}

		protected WeakListIterator()
		{
			this$0 = DebugWeakList.this;
			super();
			it = list.iterator();
		}
	}


	static final boolean DEBUG = Constants.isCVSVersion();
	private String name;
	private List list;

	public DebugWeakList(String _name)
	{
		name = _name;
		list = new ArrayList();
	}

	public DebugWeakList(String _name, DebugWeakList l)
	{
		name = _name;
		list = new ArrayList(l.list);
	}

	public void add(Object obj)
	{
		if (DEBUG)
			list.add(((Object) (new Object[] {
				obj.getClass(), new WeakReference(obj)
			})));
		else
			list.add(obj);
	}

	public void remove(Object obj)
	{
label0:
		{
			if (DEBUG)
			{
				Iterator it;
				Object target;
label1:
				do
				{
					Object entry[];
					for (it = list.iterator(); it.hasNext(); logRemoved((Class)entry[0]))
					{
						entry = (Object[])(Object[])it.next();
						WeakReference wr = (WeakReference)entry[1];
						target = wr.get();
						if (target != null)
							continue label1;
						it.remove();
					}

					break label0;
				} while (target != obj);
				it.remove();
				return;
			}
			list.remove(obj);
		}
	}

	public boolean contains(Object obj)
	{
label0:
		{
label1:
			{
				if (!DEBUG)
					break label0;
				Object target;
label2:
				do
				{
					Object entry[];
					for (Iterator it = list.iterator(); it.hasNext(); logRemoved((Class)entry[0]))
					{
						entry = (Object[])(Object[])it.next();
						WeakReference wr = (WeakReference)entry[1];
						target = wr.get();
						if (target != null)
							continue label2;
						it.remove();
					}

					break label1;
				} while (target != obj);
				return true;
			}
			return false;
		}
		return list.contains(obj);
	}

	protected void logRemoved(Class cla)
	{
		Debug.out((new StringBuilder()).append("Object '").append(cla).append("' was not removed correctly from ").append(name).toString());
	}

	public Iterator iterator()
	{
		if (DEBUG)
			return new WeakListIterator();
		else
			return list.iterator();
	}

	public int estimatedSize()
	{
		return list.size();
	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -