1) ๋ฆฌํ๋ ์
- ์๋ฐ๋ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ฉํ ์ ๋ณด๋ฅผ Class ๊ฐ์ฒด๋ก ๊ด๋ฆฌํ๋ค.
- ์ฌ๊ธฐ์ ๋ฉํ ์ ๋ณด๋ ํจํค์ง ์ ๋ณด, ํ์ ์ ๋ณด, ๋ฉค๋ฒ (์์ฑ์, ํ๋, ๋ฉ์๋) ์ ๋ณด ๋ฑ์ ๋งํ๋ค.
- ์ด๋ฌํ ๋ฉํ ์ ๋ณด๋ฅผ ํ๋ก๊ทธ๋จ์์ ์ฝ๊ณ ์์ ํ๋ ํ์๋ฅผ ๋ฆฌํ๋ ์ ์ด๋ผ๊ณ ํ๋ค.
(1) Class ๊ฐ์ฒด
[Class ๊ฐ์ฒด๋ฅผ ์ป๊ธฐ ์ํ 3๊ฐ์ง ๋ฐฉ๋ฒ]
Class c1 = ํด๋์ค์ด๋ฆ.class
Class c2 = Class.forName(“ํจํค์ง ... ํด๋์ค์ด๋ฆ”);
Class c3 = ๊ฐ์ฒด์ฐธ์กฐ๋ณ์.getClass();
[์์]
String str = "hello":
Class c1 = String.class;
Class c2 = Class.forName("java.lang.String");
Class c3 = str.getClass();
(2) ํจํค์ง์ ํ์ ์ ๋ณด
- ํจํค์ง์ ํ์ (ํด๋์ค, ์ธํฐํ์ด์ค) ์ด๋ฆ ์ ๋ณด๋ ๋ค์ ๋ฉ์๋๋ฅผ ํตํด ์ป์ ์ ์๋ค.
[๋ฉ์๋]
- Package getPackage()
ํจํค์ง ์ ๋ณด ์ฝ๊ธฐ (๋ฆฌํด ํ์
: Package)
- String getSimpleName()
ํจํค์ง๋ฅผ ์ ์ธํ ํ์
์ด๋ฆ (๋ฆฌํด ํ์
: String)
- String getName()
ํจํค์ง๋ฅผ ํฌํจํ ์ ์ฒด ํ์
์ด๋ฆ (๋ฆฌํด ํ์
: String)
[์์]
Class c = String.class;
System.out.println("ํจํค์ง : " + c.getPackage().getName());
System.out.println("ํด๋์ค ๊ฐ๋จ ์ด๋ฆ : " + c.getSimpleName());
System.out.println("ํด๋์ค ์ ์ฒด ์ด๋ฆ : " + c.getName());
(3) ๋ฉค๋ฒ ์ ๋ณด
- ํ์ (ํด๋์ค, ์ธํฐํ์ด์ค)๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉค๋ฒ ์ ๋ณด๋ ๋ค์ ๋ฉ์๋๋ฅผ ํตํด ์ป์ ์ ์๋ค.
[๋ฉ์๋]
- Constructor[] getDeclaredConstructors()
์์ฑ์ ์ ๋ณด ์ฝ๊ธฐ (๋ฆฌํด ํ์
: Constructor[] ๊ฐ์ฒด ๋ฐฐ์ด)
- Field[] getDeclaredFields()
ํ๋ ์ ๋ณด ์ฝ๊ธฐ (๋ฆฌํด ํ์
: Fields[] ๊ฐ์ฒด ๋ฐฐ์ด)
- Method[] getDeclaredMethods()
๋ฉ์๋ ์ ๋ณด ์ฝ๊ธฐ (๋ฆฌํด ํ์
: Method[] ๊ฐ์ฒด ๋ฐฐ์ด)
[์์]
class A {
// ํ๋
String name;
int age;
// ์์ฑ์
A(String name, int age) {
this.name = name;
this.age = age;
}
// ๋ฉ์๋
public void test(String str, int i) {
System.out.println(str + i);
}
public static void main(String\[\] args) throws ClassNotFoundException {
// Class ๊ฐ์ฒด ์ป๊ธฐ
Class clasz = A.class;
// ์์ฑ์ ์ ๋ณด ์ป๊ธฐ
Constructor[] constructors = clasz.getDeclaredConstructors();
// ์์ฑ์ ์ ๋ณด ์ถ๋ ฅ
System.out.println("[์์ฑ์ ์ ๋ณด]");
for (Constructor c : constructors) {
System.out.print(c.getName() + "(");
Class[] parameters = c.getParameterTypes();
printParameters(parameters);
System.out.println();
}
// ํ๋ ์ ๋ณด ์ถ๋ ฅ
System.out.println("[ํ๋ ์ ๋ณด]");
Field[] fields = clasz.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getType().getSimpleName() + " " + field.getName());
}
System.out.println();
// ๋ฉ์๋ ์ ๋ณด ์ถ๋ ฅ
System.out.println("[๋ฉ์๋ ์ ๋ณด]");
Method[] methods = clasz.getDeclaredMethods();
for (Method method : methods) {
System.out.print(method.getName() + "(");
Class[] parameters = method.getParameterTypes();
printParameters(parameters);
System.out.println(")");
}
private static void printParameters(Class\[\] parameters) {
for (int i=0; i<parameters.length; i++) {
System.out.print(parameters\[i\].getSimpleName());
if (i< parameters.length-1) {
System.out.print(",");
}
}
๋ฐ์ํ
'๐ง Programming > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ค๋ฆญ (3) - ์ ๋ค๋ฆญ ํด๋์ค์ ์ ๋ค๋ฆญ ๋ฉ์๋ (0) | 2023.07.22 |
---|---|
์ ๋ค๋ฆญ (2) - ์ ๋ค๋ฆญ & ํ์ ํ๋ผ๋ฏธํฐ (0) | 2023.07.22 |
์ ๋ค๋ฆญ (1) - ์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋ ์ด์ (1) | 2023.07.22 |
์ด๋ ธํ ์ด์ (Annotation) (0) | 2023.07.22 |
(Java) JDK ๋ฐ IntelliJ ์ค์นํ๊ธฐ (2) | 2023.04.07 |