Примерно так
| Код | import java.lang.reflect.*; import java.lang.annotation.Annotation; import java.io.Serializable;
public class TestReflect {
class Author implements Serializable { private long auId; private String lastName; public Author( int p_id, String p_lastName ) { auId = p_id; lastName = p_lastName; } public long getAuId() { return auId; } public void setAuId( long p_auId ) { auId = p_auId; } public String getLastName() { return lastName; } public void setLastName( String p_lastName ) { lastName = p_lastName; } } //======================================= public static void main(String[] args) { TestReflect t = new TestReflect(); t.checkAuthor(); } private void checkAuthor() {
Author[] arr = { new Author(1,"Mangless"), new Author(2,"Scott") }; Class clazz = arr[0].getClass(); // выводим название пакета Package p = clazz.getPackage(); if( p != null ) { System.out.println("package " + p.getName() + ";"); } else { System.out.println("package default !"); } // начинаем декларацию класса с модификаторов int modifiers = clazz.getModifiers(); System.out.print(getModifiers(modifiers)); // выводим название класса System.out.print("class " + clazz.getSimpleName() + " ");
// выводим название родительского класса System.out.print("extends " + clazz.getSuperclass().getSimpleName() + " ");
// выводим интерфейсы, которые реализует класс Class[] interfaces = clazz.getInterfaces(); for (int i = 0, size = interfaces.length; i < size; i++) { System.out.print(i == 0 ? "implements " : ", "); System.out.print(interfaces[i].getSimpleName()); } System.out.println(" {"); // выводим поля класса Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { System.out.println("\t" + getModifiers(field.getModifiers()) + getType(field.getType()) + " " + field.getName() + ";"); } System.out.println("}"); }
private String getModifiers(int m) { String modifiers = ""; if (Modifier.isPublic(m)) modifiers += "public "; if (Modifier.isProtected(m)) modifiers += "protected "; if (Modifier.isPrivate(m)) modifiers += "private "; if (Modifier.isStatic(m)) modifiers += "static "; if (Modifier.isAbstract(m)) modifiers += "abstract "; return modifiers; } private String getType(Class clazz) { String type = clazz.isArray() ? clazz.getComponentType().getSimpleName() : clazz.getSimpleName(); if (clazz.isArray()) type += "[]"; return type; } } |
|