어떤 라이버버리를 사용하는데, 특정 클래스를 상위 클래스뒤에 $를 붙여야 에러가 안나고 정상적으로 되는게 있습니다.
이를테면,
Parent$Child obj = Parent.getChild(); obj.balbal();
이런식인데요. $를 . 으로 하면 에러납니다. inner 클래스같기도 한데.. 간단히 테스트해본 바로는 확인이 안되는군요.
어떤 클래스일때 저런식으로 표기하는지요?
내부 클래스가 맞습니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <beer.h> <woman.h> do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h> do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
A.java로 아래와 같이 작성한후 컴파일을 시키면, A.class와 A$B.class 이렇게 두개의 클래스 파일이 생성되는 것을 확인할 수 있습니다.
class A { class B{} }
------------- lol
------------------------------ lol
네..두분 답변 감사드립니다.
헌데 저도 inner클래스가 컴파일후 Class$Inner 식의 파일명으로 바이트코드가 생성되는것은 아는데..간단히 테스트코드를 만들어봤을때는 에러가 나더라구요. 헌데 같은식으로 해서 라이버러리를 사용할때는 안나거든요.
import T2$Inner; public class T1 { public static void main (String[] args) { T2$Inner obj; } }
public class T2 { class Inner {} }
이를테면 상기와 같이 해서 컴파일을 해보면 T1에서 에러가 발생하는데 제가 사용하는 라이버러리는 이와같이 import 부분 및 메소드 내부에서 $를 사용하여 inner클래스를 명시했을때 에러가 안나거든요.
엇..익명으로 쓰졌을땐 수정이안되는군요..
상기 예제에선 정확하게 T1클래스의 import 부분에서만 에러가 나는데요. 라이버러리 쓸땐 import에서도 저렇게 명시해서 에러가 나지 않던데 어떤 차이가 있는것일까요.
T2의 Inner 클래스는 access modifier가 package private(default modifier)로 선언되어 있습니다.
따라서 T1이 T2와 같은 package가 아니면 import를 할 수 없을 것입니다.
코더에서 프로그래머까지...
코더에서 프로그래머까지
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
내부 클래스가
내부 클래스가 맞습니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <beer.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
이렇게 해보시면 확인할 수 있습니다.
A.java로 아래와 같이 작성한후 컴파일을 시키면,
A.class와 A$B.class 이렇게 두개의 클래스 파일이 생성되는 것을 확인할 수 있습니다.
class A
{
class B{}
}
-------------
lol
------------------------------
lol
네..두분 답변
네..두분 답변 감사드립니다.
헌데 저도 inner클래스가 컴파일후 Class$Inner 식의 파일명으로 바이트코드가 생성되는것은 아는데..간단히 테스트코드를 만들어봤을때는 에러가 나더라구요. 헌데 같은식으로 해서 라이버러리를 사용할때는 안나거든요.
이를테면 상기와 같이 해서 컴파일을 해보면 T1에서 에러가 발생하는데 제가 사용하는 라이버러리는 이와같이 import 부분 및 메소드 내부에서 $를 사용하여 inner클래스를 명시했을때 에러가 안나거든요.
엇..익명으로
엇..익명으로 쓰졌을땐 수정이안되는군요..
상기 예제에선 정확하게 T1클래스의 import 부분에서만 에러가 나는데요. 라이버러리 쓸땐 import에서도 저렇게 명시해서 에러가 나지 않던데 어떤 차이가 있는것일까요.
Access modifier 때문인 듯 합니다
T2의 Inner 클래스는 access modifier가 package private(default modifier)로 선언되어 있습니다.
따라서 T1이 T2와 같은 package가 아니면 import를 할 수 없을 것입니다.
코더에서 프로그래머까지...
코더에서 프로그래머까지
댓글 달기