2010-07-21 2 views
0

약간의 문제가 있습니다.자바 인터페이스 구현 문제

클래스가있다 :

interface jj{ 
    public class ll implements gg{ 
    public static String j ="C:\\"; 
     //some code here 
} 
} 

클래스 GGG :

interface gg{ 
public class ggg extends JFrame implements jj{ 
       //bunch of code + a textfield 
     textField = new JTextField(); 
     textField.setBounds(72, 120, 217, 20); 
     textField.setColumns(10); 
       //bunch of code 
} 
} 

클래스 AAA

public class aaa implements jj, gg { 
    public aaa(){ 

//File chooser here + editing strin "j" from class "ll" 
     File f = chooser.getSelectedFile(); 



     if(f!=null) 
     { 
      jj.ll.j = f.getPath(); 
       //And printing "j" string to the text field from ggg class 
      gg.ggg.textField.setText(jj.ll.j); 
     } 
} 
} 

내 문제는, 텍스트 필드 인쇄가 작동하지 않습니다. 나는 System.out.println에 jj.ll.j 문자열을 테스트 해보기로했다. 네, 예상대로 작동하고 있습니다.

+5

인터페이스 내에 클래스가 필요합니까? – stacker

+6

제 조언은 비 인터페이스 클래스를 인터페이스 내에 포함시키지 않는 것입니다. – Powerlord

+0

3 개의 다른 클래스에서 j 문자열을 사용해야합니다. 자바가 멀티 상속 기능을 제공한다면 훨씬 더 쉬울 것이다.하지만 우리는 가지고있는 것을 가지고있다. – artouiros

답변

5

인터페이스 내부에서 클래스를 만드는 논리를 얻지 못합니다.

다양한 클래스에서 j 문자열이 필요한 경우이를 일부 클래스의 공용 정적 필드로 선언하십시오. 상수를 얻기위한 인터페이스를 구현하는 것은 꽤 오래되었습니다. Java 1.5 이상을 사용하는 경우 정적 가져 오기를 수행하십시오.

+0

정적 가져 오기를 수행하는 방법을 알지 못합니다. 예를 들어 주시겠습니까? – artouiros

+0

UPD : 감사합니다. 오라클 설명서에서 찾았습니다. – artouiros

1

나는 컴파일러가 그렇게 할 수 있다는 것에 조금 놀랐지만, 단지 호기심이 없다면, 이것을하지 마십시오.

다른 방법을 찾아보십시오.

추가 된 복잡성은 결코 가치가 없습니다.