II는 다음과 같이 몇 가지 문제가 점점 STH 자바에서 일해야 :이 개체에 대한 참조가 정적 인 경우 개체에서 비 정적 메서드에 액세스하는 방법은 무엇입니까?
public class ClassA {
public static ClassB PointerToB;
public static ClassC PointerToC;
public ClassA() {
PointerToB = new ClassB();
PointerToC = new ClassC();
PointerToB.doSthB();
}
}
public class ClassB {
public void doSthB() {
ClassA.PointerToC.doSthC();
}
}
public class ClassC {
public void doSthC() {
// ...
}
}
내가 내 "기본"클래스 ("A")은 여러 회원이이 수업을 말한다. 이러한 다른 객체 ("B", "C")에 대한 포인터는 정적으로 만들어 지므로 "B"의 코드는 "C"의 (정적이 아닌) 메소드에 액세스 할 수 있습니다.
정적 메서드는 다른 정적 메서드 및/또는 변수에만 액세스 할 수 있지만 이러한 클래스에 대한 REFERENCE는 정적이므로 실제 클래스 자체는 아니므로이 방법으로 제대로 작동해야합니다. 그렇지 않아야합니까?
나는 이러한 종류의 액세스가 내 응용 프로그램 내가 액세스 ClassB가 필요한 모든 시간 :(
충돌 때문에 조금 ClassC에서 (비 정적) 방법 A 또는 모든 참조를 통과하지 않고, 여기에 붙어있어 C는 함께. 내가 이렇게 어떻게? ClassA
에 대한 생성자가 아닌 다른
코드가 컴파일/의미가 없습니다. 두 번째'public ClassA'는 public ClassA()입니다 (ClassA의 생성자입니다)? 그렇다면 왜 클래스를 인스턴스화 할 때마다 정적 참조를 재설정합니까? 그게 무슨 말이야? 참조를 선언 할 때 참조를 초기화하는 것이 더 일반적입니다. –
또한 변수가 일부 * REALLY STRONG * 명명 규칙을 따르지 않습니다. 예를 들어 변수 이름은 항상 소문자로 시작합니다.클래스, 인터페이스 및 열거 형과 같은 유형의 이름 만 대문자로 시작해야합니다. –
) 1.) 예 - 생성자가되어야합니다 ... 편집했습니다 ... 2.)이 코드는 의미가 없습니다. 그것은 예제로 게시 된 코드입니다. 중요하다면 : 그것은 안드로이드 프로젝트이고, 클래스 a는 원격 서비스입니다 (그리고 런타임 당 한번만 인스턴스화됩니다). 클래스 a와 b는 일부 데이터에 대한 컨테이너 클래스입니다. b는 데이터 C 저장소에 대한 액세스가 필요한 데이터에서 일부 기능을 실행합니다. – xenonite