ReflectionMain.java
/**
* 런타임 중 자바 콤포넌트(클래스) 속성 확인
*/
public class ReflectionMain {
public static void main(String[] args) throws ClassNotFoundException {
// Class.class 클래스에 대한 정의 정보를 가지고 있음.
// ? (wildcard) - type을 지정
/**
* 1. 클래스 가져오기
* : 클래스를 못찾을 경우 ClassNotFoundException 발생
*/
//자바기본형에 대한 클래스 정보를 얻는 방법. 3가지
//방법 1 :
//Class c = Class.forName("java.lang.String");
//방법 2 :
//Class integerClass1 = int.class;
//방법 3 : 기본형의 경우 (Integer 와 같은) Wrapper 에 기정의된 TYPE을 사용한다.
//Class integerClass2 = Integer.TYPE;
Class anyClass = Class.forName("com.cafe24.service.UserService");
System.out.println("Class Name: " + anyClass.getName());
/**
* 2. 필드 정보
* : private 일 경우 출력 되지 않는다.
*/
Field[] fields = anyClass.getFields();
System.out.println("Existed fields:");
for(Field f : fields) {
System.out.println("\t" +f.getName());
}
/**
* 3. 메소드 정보
* : private 이여도 출력 된다.
*/
Method[] declaredMethods = anyClass.getDeclaredMethods();
System.out.println("Existed Methods:");
for(Method m : declaredMethods) {
System.out.println("\t" +m.getName());
}
/**
* 4. 구조체 정보
*/
Constructor[] constructors = anyClass.getConstructors();
System.out.println("Existed Constructor:");
for(Constructor c : constructors) {
System.out.println("\t" +c.getName() + ", Param Count: " + c.getParameterCount());
}
/**
* 5. 같은 클래스인지 확인
*/
boolean result = anyClass.isInstance(new UserService());
System.out.println("IsSameClass? " + result);
}
}
UserService.java
public class UserService {
public String id;
public String name;
private String password;
public UserService() {}
public UserService(String id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "UserService [id=" + id + ", name=" + name + ", password=" + password + "]";
}
}
실행결과
Class Name: com.cafe24.service.UserService
Existed fields:
id
name
Existed Methods:
toString
getName
getId
setName
setId
setPassword
getPassword
Existed Constructor:
com.cafe24.service.UserService, Param Count: 0
com.cafe24.service.UserService, Param Count: 3
IsSameClass? true
'규린이 IT 개발' 카테고리의 다른 글
[Python] 파이썬 기초 (0) | 2019.06.12 |
---|---|
[이클립스] build path (0) | 2019.06.11 |
[리눅스] 디스크 마운트 (0) | 2019.06.04 |
[인프라] 캐시를 이용한 대규모 서비스 처리 방법 (0) | 2019.05.13 |
[mariadb] 참고 명령어 (0) | 2019.05.02 |