private static final Object getHandler( Class forClass, ClassCache handlers )
{
Object answer = null;
synchronized(handlers) {
if ((answer = handlers.get(forClass)) == null)
{
Class keyFound;
if (forClass.isArray())
{
answer = handlers.get(Object[].class);
keyFound = null;
}
else
{
keyFound = forClass;
outer:
for ( Class c = forClass; c != null; c = c.getSuperclass() )
{
answer = handlers.get(c);
if ( answer == null )
{
Class[] inteces = c.getInteces();
for ( int index=0, count=inteces.length; index < count; ++index )
{
Class iface = inteces[index];
answer = handlers.get(iface);
if (answer == null)
{
/* Try super-inteces */
answer = getHandler(iface, handlers);
}
if ( answer != null )
{
keyFound = iface;
break outer;
}
}
}
else
{
keyFound = c;
break;
}
}
}
if ( answer != null )
{
if ( keyFound != forClass )
{
handlers.put( forClass, answer );
}
}
}
}
return answer;
}
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-32760-6.html
和我家过的