📄 debugweaklist.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 + -