| 420 | } |
| 421 | |
| 422 | public Class[] getDeclaredClasses() { |
| 423 | ClassAddendum addendum = vmClass.addendum; |
| 424 | if (addendum != null) { |
| 425 | InnerClassReference[] table = addendum.innerClassTable; |
| 426 | if (table != null) { |
| 427 | int count = 0; |
| 428 | for (int i = 0; i < table.length; ++i) { |
| 429 | InnerClassReference reference = table[i]; |
| 430 | if (reference.outer != null |
| 431 | && Arrays.equals(vmClass.name, reference.outer)) |
| 432 | { |
| 433 | ++ count; |
| 434 | } |
| 435 | } |
| 436 | |
| 437 | Class[] result = new Class[count]; |
| 438 | for (int i = 0; i < table.length; ++i) { |
| 439 | InnerClassReference reference = table[i]; |
| 440 | if (reference.outer != null |
| 441 | && Arrays.equals(vmClass.name, reference.outer)) |
| 442 | { |
| 443 | try { |
| 444 | result[--count] = getClassLoader().loadClass |
| 445 | (new String(reference.inner, 0, reference.inner.length - 1)); |
| 446 | } catch (ClassNotFoundException e) { |
| 447 | throw new Error(e); |
| 448 | } |
| 449 | } |
| 450 | } |
| 451 | |
| 452 | return result; |
| 453 | } |
| 454 | } |
| 455 | return new Class[0]; |
| 456 | } |
| 457 | |
| 458 | public Class getDeclaringClass() { |
| 459 | ClassAddendum addendum = vmClass.addendum; |