class ๋ฐ์์ private ํจ์๋ฅผ ํ์ฉํด ํ
์คํธ๋ฅผ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ต๋๋ค.
public์ผ๋ก ๋ณ๊ฒฝํ์ง ์๊ณ Java Reflection์ ์ด์ฉํด private ํจ์์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
- Reflection
๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์
์ ์์ง ๋ชปํด๋, ์ญ์ผ๋ก ํด๋์ค๋ฅผ ๋์ ๋ก๋ฉํ์ฌ
ํด๋์ค์ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๊ฑฐ๋ ์ธํฐํ์ด์ค, ๋ฉ์๋ ๋ฑ์ ์ ๋ณด๋ฅผ ์์๋ด์ด ํด๋น ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฒ์
๋๋ค.
1. import
import java.lang.reflect.Method;
2. Class ๊ฐ์ฒด ์ ์ธ
์ฌ์ฉํ private ํจ์๊ฐ ์ ์ธ๋ Class ๊ฐ์ฒด๋ฅผ ์ ์ธํฉ๋๋ค.
TestConfig testConfig = new TestConfig();
3. getDeclaredMethod ์ฌ์ฉ
์ ์ธํ ๊ฐ์ฒด๋ช
.getClass().getDeclaredMethod("์ฌ์ฉํ ํจ์๋ช
", ์ฌ์ฉํ ํจ์์ ํ๋ผ๋ฏธํฐ type class)
Method method = testConfig.getClass().getDeclaredMethod("getDecPwd", String.class);
4. setAccessible
true๋ก ์ค์
method.setAccessible(true);
5. invoke
return ๊ฐ์ด Object์ด๊ธฐ ๋๋ฌธ์ String์ผ๋ก ๋ณํํด์ค๋๋ค.
Method๋ช
.invoke(์ ์ธํ ๊ฐ์ฒด๋ช
, "์ฌ์ฉํ ํจ์์ ์ฐ์ผ ํ๋ผ๋ฏธํฐ ๊ฐ")
String decPwd = (String) method.invoke(testConfig, "ํ๋ผ๋ฏธํฐ ๊ฐ");
- ์ ์ฒด์ฝ๋
import java.lang.reflect.Method;
TestConfig testConfig = new TestConfig();
Method method = testConfig.getClass().getDeclaredMethod("getDecPwd", String.class);
method.setAccessible(true);
String decPwd = (String) method.invoke(testConfig, "ํ๋ผ๋ฏธํฐ ๊ฐ");
System.out.println(decPwd);
//์ถ๋ ฅ๊ฐ = ๋ณตํธํ๋ ์ํธ ๊ฐ decPwd
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] javax.net.ssl.SSLHandshakeException: connection during handshake (0) | 2022.03.23 |
---|---|
[Java] log4j Log ๋ ๋ฒจ (0) | 2022.01.07 |
[Java] jar ํ์ผ ์์ฑํ๊ธฐ (Eclipse / bat ํ์ผ) (1) | 2021.12.16 |
[Java] ๊ฐ์ ๋๋ฉ์ธ ์ฌ์ฉ์ session๊ฐ null๋ก ๋ณ๊ฒฝ๋๋ ํ์ (2) | 2021.12.10 |
[Java] JSON ํ์ฑํ๊ธฐ (4) | 2021.12.07 |
๋๊ธ