2011-09-06 5 views
2

가능한지 알고 싶습니다. 동일한 클래스 (다른 클래스가 아님)에 대해 둘 이상의 파일을 보유하고 싶습니다. 나는 코드의 더 나은 조직을 원한다.Java에서 동일한 클래스에 대해 둘 이상의 파일을 가질 수 있습니까?

나는 대답이 "아니오"라고 생각하지만 어쩌면 누군가가 이것을하는 모호한 방법을 알고 있습니다.

아이디어는 AnalysisConfiguration이라는 구성 GUI 파일과 GUI와 Apache Commons Configuration (GUI에서 설정 또는 GUI로 구성로드) 사이를 연결하는 또 다른 클래스입니다.

나는 두 클래스가 같은 클래스가 될 수 있다고 생각하지만, 코드는 "GUI-To-File"메소드로 비즈니스 구성 메소드를 혼합하는 것이 더러운 것으로 생각한다. 두 번째 클래스를 AnalysisConfigurationFileBridge과 같은 식으로 쉽게 호출 할 수 있지만, 호기심은 동일한 클래스로 두 개를 가질 수 있는지 검색하도록 알려줍니다.

+0

이렇게하면 어떻게 될 것으로 기대하십니까? 솔직히 클래스 리팩토링과 디자인 개선을 검토해야 할 것 같습니다. –

+0

이것을 수행하는 방법이 있더라도 더 나은 조직이 아니기 때문에 정확하지 않을 수 있습니다. –

+0

가능한 중복 http://stackoverflow.com/questions/2764234/partial-classes-partial-class-file? –

답변

0

자바 부분 클래스를 코딩 할 수있는 능력을 가지고 있지 않습니다를 참조하십시오. 다른 언어들, for example C#, do. 게다가, mixins는 Java에서 지원되지 않기 때문에 함께 특정 코딩 패턴이 번거로워집니다. 한 부분이 다른 부분을 확장하는 것으로 충분할 수 있습니다. 그렇지 않으면 바이트 코드 조작, 메타 프로그래밍 등의 다양한 옵션을 보거나 필요에 따라 다른 JVM 언어를 사용하기 만하면됩니다.

3

대답은 실제로 아니오입니다. 클래스의 코드가 너무 길어 조직을 잘 정리하기 위해 두 개의 파일이 필요하다면 아마도 그것이 리팩터링되어 여러 클래스로 분리되어야한다는 신호 일 것입니다.

+1

긴 클래스는 반드시 리팩토링을 의미하지는 않습니다. Java의'String' 클래스를보십시오. 꽤 긴 수업입니다.대신 리팩토링을 할 때 커플 링, 응집력, 팬 인/팬 아웃과 같은 측정 및 측정 항목을 살펴 봐야합니다. –

+0

@ 토마스 : 동의 함. 불어로, "확실한"(확실히의 문자적인 번역)은 종종 실제로 "아마도"를 의미합니다. 내 생각에 영어로는 그렇지 않지만 내 두뇌는 프랑스어로 생각합니다. 나는 내 대답을 편집했다. –

1

아니요, 같은 패키지에 없습니다. .java 파일의 이름은 항상 최상위 (공개) 클래스의 이름과 일치해야합니다.

0

아니요. 동일한 소스 파일에 둘 이상의 클래스가있을 수 있습니다. javac에 처리하기 전에 고유 한 여러 소스 파일을 하나로 결합하는 일부 전 처리기를 사용할 수도 있지만 추가 빌드 단계가 추가됩니다. 인 IntelliJ의 IDEA와 같은

괜찮은 IDE는 당신에게 도움이 될 더

+0

동일한 소스 파일에 둘 이상의 클래스가있는 것은 OP의 질문과 아무 관련이 없습니다. –

1

당신은 하나 개의 화면 J 파일에 일부 구현하고 자바 파일의 나머지를 넣어 AspectJ의의 간 유형 선언을 사용하고 마술 컴파일시에 결합했다.

저는 Spring Roo가 getter와 setter에 이것을 사용한다는 것을 알고 있습니다. 즉, .java 파일의 상용구 코드를 사용하면 더 깨끗해집니다.

http://www.eclipse.org/aspectj/doc/released/progguide/language-interType.html

0

당신이 할 수있는 일은 부모로 여러 추상 클래스가 있습니다. 가질 수 있습니다

abstract class A { 
    // some methods and fields. 
} 

abstract class B extends A { 
    // some more methods and fields. 
} 

class C extends B { 
    // some more methods and fields. 
} 

많은 수업이 미친 듯이 보인다면 그냥 정신 나간 것일 수 있습니다. ;) 가장 합리하다고 생각하는만큼의 수업을 사용해야합니다.

관련 문제