반사 획득 클래스 기본 구조 정보

2142 단어
1. 가방 이름 가져오기
Class> clazz = Person.class;
//      
Package p = clazz.getPackage();
//      
String packageName = p.getName();

2、상위 클래스class 대상 가져오기
Class> clazz = Person.class;
Class> superClazz = clazz.getSuperclass();

3. 실현된 인터페이스의class 대상 가져오기
Class> clazz = Person.class;
//         class  
Class>[] clazzInterfaces = clazz.getInterfaces();

4. 구조기 획득 및 실례화
Class> clazz = Person.class;
//          
Constructor>[] declaredConstructors = clazz.getDeclaredConstructors();
//     (    )public   
Constructor>[] constructors = clazz.getConstructors();
//             
Constructor> specifiedConstructor = clazz.getDeclaredConstructor(String.class);
//         
Object instance = specifiedConstructor.newInstance("hellow");

5, 획득 방법 및 방법 호출
Class> clazz = Person.class;
//         
Method[] declaredMethods = clazz.getDeclaredMethods();
//     (    )public  
Method[] methods = clazz.getMethods();
//            
Method method = clazz.getDeclaredMethod("setName");
//     ,       
Object obj = clazz.getDeclaredConstructors().newInstance();
method.invoke(obj, "hellow");

//       
String name = method.getName();
//      
int mod = method.getModifiers();
String modName = Modifier.toString(mod);
//       
Class> returnType = method.getReturnType();
//       
Class>[] parameterTypes = method.getParameterTypes();
//     
Class>[] exceptionTypes = method.getExceptionTypes();

6, 호출 클래스 구성원
Class> clazz = Person.class;
Object obj = clazz.getDeclaredConstructor().newInstance();
//         
Field[] declaredFields = clazz.getDeclaredFields();
//     (    )public  
Field[] fields = clazz.getFields();
//         
Field field = clazz.getDeclaredField("name");
//        ,       
//         public,      field.setAccessible(true);
Object value = field.get(obj);
//       
Class> type = field.getType();
//         , :java.lang.String
type.getName();
//         , :String
type.getSimpleName();

좋은 웹페이지 즐겨찾기