[ClassLoader 퀴즈 1] Whiteship은 대체 누가 데려온 것일까?
어제 면접 볼 때 받은 질문이기도 하다. 지금 내가 있는 회사에 어떻게 들어가게 됐으며 누가 데려갔고 그 사람을 어떻게 알게 됐느냐는 질문을 받았었다. 당시 난 클래스로더가 떠올랐다. 대체 누가 날 로딩한 걸까. 사부? Toby? 그 둘은 같은 사람일까?
@Test
public void appClassLoader() throws Exception {
URL url = new URL("file:C:/intellij9-workspace/springsprout2/test/sandbox/classloader");
URLClassLoader uCL1 = new URLClassLoader(new URL[]{url});
Class whiteshipClass1 = uCL1.loadClass("sandbox.classloader.Whiteship");
URLClassLoader uCL2 = new URLClassLoader(new URL[]{url});
Class whiteshipClass2 = uCL2.loadClass("sandbox.classloader.Whiteship");
System.out.println("URLClassLoader1: " + uCL1); // C1
System.out.println("URLClassLoader2: " + uCL2); // C2
System.out.println("whiteshipClass1 loaded by: " + whiteshipClass1.getClassLoader()); // C3
System.out.println("whiteshipClass2 loaded by: " + whiteshipClass2.getClassLoader()); // C4
}
편의상 콘솔에 찍히는 객체 레퍼런스를 C1, C2, C3, C4라고 표기하겠다.
test 이하의 폴더는 현재 클래스패스로 잡혀있는 상태이다.
다음 중 참인 것은?
1. C1과 C3은 같다.
2. C2와 C4는 같다.
3. C1과 C3, C4가 같다.
4. C2와 C3, C4가 같다.
5. C3과 C4는 같다.
정답은 다음 글에서 공개. To be continued!