안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
오늘은 질문이 많네요 ^^
안드로이드의 Launcher 소스를 보다가 문의 드립니다.
상위 클래스의 protected 변수가
상속받은 하위 클래스에 따라서 어떤 곳에서 사용하고, 어떤 곳에서는 에러가 나는 이유가 뭘까요?
안드로이드의 View 클래스 보면
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
.. 중간 생략 ....
/**
* The offset, in pixels, by which the content of this view is scrolled
* horizontally.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mScrollX;
/**
* The offset, in pixels, by which the content of this view is scrolled
* vertically.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mScrollY;
... 중간 생략 ....
};
위와 같이 mScrollX 와 mScrollY 가 Protected 변수로 있습니다.
안드로이드의 Launcher 소스를 보면,
public class BubbleTextView extends TextView {
.. 중간 생략 ...
@Override
public void draw(Canvas canvas) {
final Drawable background = mBackground;
if (background != null) {
final int scrollX = mScrollX;
final int scrollY = mScrollY;
.. 중간 생략
};
이렇게 상속 받은 클래스의 override 함수에서 사용하고 있습니다.
그런데, 이 코드를 이클립스로 가져가면,
mScrollX connat be resolved
라고 에러가 나옵니다.
왜 같은 코드가 코드의 위치에 따라서 에러로 바뀌는 지요?
주석의 @hide는 무슨 역할을 하는 것인지요?
이것이 Java의 특별한 문법인지요?
C++ 에서는 이런 경우는 없는데, 이상합니다.
감사합니다.
오늘은 질문이 많네요 ^^
안드로이드의 Launcher 소스를 보다가 문의 드립니다.
상위 클래스의 protected 변수가
상속받은 하위 클래스에 따라서 어떤 곳에서 사용하고, 어떤 곳에서는 에러가 나는 이유가 뭘까요?
안드로이드의 View 클래스 보면
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
.. 중간 생략 ....
/**
* The offset, in pixels, by which the content of this view is scrolled
* horizontally.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mScrollX;
/**
* The offset, in pixels, by which the content of this view is scrolled
* vertically.
* {@hide}
*/
@ViewDebug.ExportedProperty
protected int mScrollY;
... 중간 생략 ....
};
위와 같이 mScrollX 와 mScrollY 가 Protected 변수로 있습니다.
안드로이드의 Launcher 소스를 보면,
public class BubbleTextView extends TextView {
.. 중간 생략 ...
@Override
public void draw(Canvas canvas) {
final Drawable background = mBackground;
if (background != null) {
final int scrollX = mScrollX;
final int scrollY = mScrollY;
.. 중간 생략
};
이렇게 상속 받은 클래스의 override 함수에서 사용하고 있습니다.
그런데, 이 코드를 이클립스로 가져가면,
mScrollX connat be resolved
라고 에러가 나옵니다.
왜 같은 코드가 코드의 위치에 따라서 에러로 바뀌는 지요?
주석의 @hide는 무슨 역할을 하는 것인지요?
이것이 Java의 특별한 문법인지요?
C++ 에서는 이런 경우는 없는데, 이상합니다.
감사합니다.
2009.10.08 13:46:44
코드를 어떻게 가져가셨나가 중요한데요 자바에서 protected 접근지정자는 c++에서와는 약간 다른데
상속된 자식클래스에서 접근이 가능하며 같은패키지관계에서 접근이 가능합니다.
상속된 자식클래스에서 접근이 가능하며 같은패키지관계에서 접근이 가능합니다.
2009.10.08 17:37:23
안드로드 사이드 에서 답변 답았습니다.
http://www.androidside.com/bbs/board.php?bo_table=03_2&wr_id=765
노란보라 09-10-08 10:37
2009.10.08 17:38:00
결국 주석에 있는 @hide 가 붙은 것들은 SDK 상태에서는 안 보이고
사용이 불가능 하다는 것입니다.
OS를 새로 만들고 SDK를 다시 만들면 가능하기는 하다고 하네요 ㅡ.ㅡ
사용이 불가능 하다는 것입니다.
OS를 새로 만들고 SDK를 다시 만들면 가능하기는 하다고 하네요 ㅡ.ㅡ
* The offset, in pixels, by which the content of this view is scrolled
* vertically.
* {@hide}
*/
/* ..... */ <---- 묶인 부분은 주석입니다. 아무 영향도 끼치지 않습니다.