Java Reflection 예제
12 Feb 2019 | AndroidJava 언어에서 제공하는 Reflection 기능을 이용해서 각 클래스의 생성자 정보 등을 출력하는 예제입니다.
Main.java
package snowdeer.reflection;
public class Main {
public static void main(String[] args) {
ReflectionTest test = new ReflectionTest();
test.start();
}
}
ReflectionTest.java
package snowdeer.reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.Parameter;
public class ReflectionTest {
public void start() {
Class c = SampleClass.class;
Log("1) Class Info");
Log(" - " + c.toString());
Log("2) Class Constructors & Parameters");
Constructor[] cons = c.getDeclaredConstructors();
for (int i = 0; i < cons.length; i++) {
Log(" - " + cons[i].toString());
Parameter[] params = cons[i].getParameters();
for (int j = 0; j < params.length; j++) {
Log(" > " + params[j].getType());
}
}
}
void Log(String text) {
System.out.println(text);
}
}
SampleClass.java
package snowdeer.reflection;
public class SampleClass {
int id;
String name;
long startPos;
float speed;
public SampleClass(int id, String name, long startPos, float speed) {
init(id, name, startPos, speed);
}
public SampleClass(int id, String name, long startPos) {
init(id, name, startPos, 0);
}
public SampleClass(int id, String name) {
init(id, name, 100, 0);
}
public SampleClass(int id) {
init(id, "SampleClass", 100, 0);
}
public SampleClass() {
init(1, "SampleClass", 100, 0);
}
void init(int id, String name, long startPos, float speed) {
this.id = id;
this.name = name;
this.startPos = startPos;
this.speed = speed;
}
}
결과 화면
1) Class Info
- class snowdeer.reflection.SampleClass
2) Class Constructors & Parameters
- public snowdeer.reflection.SampleClass()
- public snowdeer.reflection.SampleClass(int)
> int
- public snowdeer.reflection.SampleClass(int,java.lang.String)
> int
> class java.lang.String
- public snowdeer.reflection.SampleClass(int,java.lang.String,long)
> int
> class java.lang.String
> long
- public snowdeer.reflection.SampleClass(int,java.lang.String,long,float)
> int
> class java.lang.String
> long
> float