Whiteship's Note

[ClassLoader 퀴즈 1] Whiteship은 대체 누가 데려온 것일까?

Java : 2010. 2. 19. 14:48


어제 면접 볼 때 받은 질문이기도 하다. 지금 내가 있는 회사에 어떻게 들어가게 됐으며 누가 데려갔고 그 사람을 어떻게 알게 됐느냐는 질문을 받았었다. 당시 난 클래스로더가 떠올랐다. 대체 누가 날 로딩한 걸까. 사부? 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!


top

  1. Favicon of https://helols.tistory.com BlogIcon is윤군 2010.02.19 15:18 신고 PERM. MOD/DEL REPLY

    정답은 6번..

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.02.19 15:36 신고 PERM MOD/DEL

    다음 문제는 예약해서 저녁 쯤 올라오게 걸어놔야지.
    너무 빨리 답을 공개하면 재미가 없어;;

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.02.19 15:43 신고 PERM MOD/DEL

    아니다. 맞추는 사람이 없으면 다음 문제도 계속 비공개..

    영원히...

  2. Favicon of http://toby.epril.com BlogIcon 토비 2010.02.19 16:11 PERM. MOD/DEL REPLY

    코드에 한가지 빼먹은 게 있군..

    뭔지는 영원히 비공개.

  3. Favicon of https://helols.tistory.com BlogIcon is윤군 2010.02.19 16:25 신고 PERM. MOD/DEL REPLY

    TobyClass 가 빠졌군요 ;;; 퍼;;;;억 ==3

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.02.19 16:35 신고 PERM MOD/DEL

    그런가봐;; ㄷㄷㄷ

  4. Favicon of http://me2day.net/geekinside BlogIcon 박성철 2010.02.23 11:44 PERM. MOD/DEL REPLY

    문제에 문제가 있어요.
    sandbox.classloader.Whiteship가 parent ClassLoader로도 접근할 수 있는 경로에 있는지 없는지를 분명히 적어주셔야 하는데 말이죠.
    parent ClassLoader의 classpath에 C:/intellij9-workspace/springsprout2/test/sandbox/classloader가 포함되어 있지 않다면? ㅎㅎ

    Favicon of http://whiteship.me BlogIcon 기선 2010.02.23 12:13 PERM MOD/DEL

    흠 조건을 명시 안했네요. @_@;;

    sandbox.classloader.Whiteship 클래스는 클래스패스 경로에 들어있습니다.

    만약에 parent의 기본 클래스패스에 저 클래스가 없다면 loadClass하는 순간에 ClassNotFoundException입니다. 저 경로에는 java 파일만 있지 class 파일은 없으니까요 ㅋㅋ

Write a comment.




: 1 : ··· : 190 : 191 : 192 : 193 : 194 : 195 : 196 : 197 : 198 : ··· : 2638 :