2013-11-14 2 views
1

안드로이드 애플 리케이션에서 응용 프로그램의 하위 클래스에 정적 변수를 갖는 어떤 지점이 있습니까? 올바르게 이해하면 응용 프로그램은 응용 프로그램이 시작되고 공용 변수가 전역이 될 때 인스턴스화되는 싱글 톤입니다. 변수를 응용 프로그램 하위 클래스의 "public static"으로 선언하면 어쨌든 전역 변수가되는 변수를 무의미하게 작성하고 있습니까?응용 프로그램 서브 클래스의 정적 변수. (안드로이드)

도움 주셔서 감사합니다. 클래스의 정적 참조를하고 정적 메서드 getInstance()을 제공합니다 - 당신이 그것을 구현하지 않는 한

답변

1

If I understand things correctly, the Application is a singleton that's instantiated when the app is started
는 예,하지만 당신에서, 어쩌면보기의 OS 지점에서 싱글이다.

and its public variables will be global
참이지만 정적 변수 만 직접 액세스 할 수 있습니다. 비 정적 인스턴스를 얻으려면 getInstance() 메소드를 제공해야하며, 그런 다음에 만 public 선언 된 변수 클래스에 액세스 할 수 있습니다. 지금까지 자바와 OOP 관점에서 새로운 점은 없다.

If I declare a variable as "public static" in the Application subclass, am I just pointlessly making a variable global that would have been global anyway?
네, 당신은이 모든 것을 다른 곳에서도 정의 할 수 있습니다.

더 추가하려면 : 어쨌든 Application 클래스의 인스턴스를 가져 오는 것은 별 문제가 아니므로주의해야합니다. Application은 고유 한 의미와 논리를 가지고 있으며 동시에 그것에 대한 참조를 얻는 것은 위험하고 무의미합니다.

는 빠른 응답 @gunar에 대한 another similar question.

+0

감사와 관련된 것처럼 보일 수 있습니다. 그러나 나는 아직도 그것을 완전히 얻지 못한다. 여기에 다른 질문이 있습니다. "MyApp extends Application"을 사용하여 응용 프로그램을 확장하고 "public String myString"을 추가하면 전 세계적으로 myString에 액세스 할 수 있으며 MyApp 사본이 하나뿐이므로 MyString 사본 하나만 생성됩니다. 내가 볼 수 있듯이 정적 변수도 전역 적으로 액세스 할 수 있으며 여기에는 단 하나의 복사본 만 있습니다. – Shanie

+0

다음은 정식 버전입니다. 빠른 응답 @gunar에 감사드립니다. 그러나 나는 아직도 그것을 완전히 얻지 못한다. 여기에 다른 질문이 있습니다. "MyApp"로 응용 프로그램을 확장하고 "public String myString"을 추가하면 전 세계적으로 myString에 액세스 할 수 있으며 MyApp 사본이 하나뿐이므로 MyString 사본 하나만 생성됩니다. 정적 myString을 만들면 전역으로 액세스 할 수 있으며 복사본이 하나뿐입니다. 그것의 모든 공용 메서드는 이미 같은 일을 (성능, 가독성 등) 할 것 같습니다 MyApp 내에서 정적 myString을 사용하는 이유가 있습니까? 감사합니다 – Shanie

관련 문제