in core/src/main/java/org/apache/commons/proxy2/impl/AbstractSubclassingProxyFactory.java [126:160]
public static Class<?> getSuperclass(Class<?>[] proxyClasses)
{
final Class<?>[] superclasses = toNonInterfaces(proxyClasses);
switch (superclasses.length)
{
case 0:
return Object.class;
case 1:
final Class<?> superclass = superclasses[0];
if (Modifier.isFinal(superclass.getModifiers()))
{
throw new ProxyFactoryException("Proxy class cannot extend " + superclass.getName()
+ " as it is final.");
}
if (!hasSuitableDefaultConstructor(superclass))
{
throw new ProxyFactoryException("Proxy class cannot extend " + superclass.getName()
+ ", because it has no visible \"default\" constructor.");
}
return superclass;
default:
final StringBuilder errorMessage = new StringBuilder("Proxy class cannot extend ");
for (int i = 0; i < superclasses.length; i++)
{
Class<?> c = superclasses[i];
errorMessage.append(c.getName());
if (i != superclasses.length - 1)
{
errorMessage.append(", ");
}
}
errorMessage.append("; multiple inheritance not allowed.");
throw new ProxyFactoryException(errorMessage.toString());
}
}