변수를 사용하여 다른 클래스를 인스턴스화하려고합니다. 예를 들어 는 :다른 클래스에 동일한 변수 이름을 사용하는 방법
Object blah;
class1 ex1;
class2 ex2;
public void test(int i){
if(i == 1){
blah = new class1();
} else {
blah = new class2();
}
}
어떻게 자바에서이 일을 가겠어요?
편집 1 : 죄송합니다. 이제 자세히 알려 드리겠습니다.
의 내가 세 가지 클래스가 있다고 가정 해 봅시다 :
public class B1{
C instanceC;
public B1(){
instanceC = new C();
//uses a method of instanceC.
}
}
public class B2{
C instanceC;
public C(){
instanceC = new C();
//uses a method of instanceC.
}
}
: 내 주요이며, B. B는 문제는 이것이다 C.
를 사용하여 사용 A, B와 C
A는을 A의
다음 :
public class A implements MouseListener{
Object blah;
B1 instanceB1;
B2 instanceB2;
public void test(int i){
if(i == 1){
blah = new B1();
} else {
blah = new B2();
}
}
//I left the other mouseListener methods blank
public void mouseReleased(int i){
blah.instanceC.someMethod();
}
public static void main(String[] args) {
A instanceA = new A();
A.test(1);
}
}
편집 2 : 내가 사용하려고 instanceC.someMethod() 또는 instanceC.someVariable 그것은 널 포인터 예외를 제공합니다.
이 내용이 충분히 분명 해졌기를 바랍니다. 혼란 스러울 경우 나에게 알려주십시오. 제가 더 단순화 할 수 있는지 알게 될 것입니다. 이미 도움이 된 사람들 덕분에! —하지만 Object
에없는 그것의 모든 메서드 나 속성을 사용하는 것이 어색 할 것 (당신이 인스턴스가 아닌 클래스와 new
을 사용하는 것보다 다른) 일 것이다 blah
이 Object
로 선언 된 경우
해당 코드 뒤에있는 의도는 효과가 있지만 어쩌면 좋은 생각이 아닙니다. –
"다른"클래스는 어떻게됩니까? 공통 기본 클래스가 실제로'Object' 인 경우 디자인 문제가 있습니다. – fge
스칼라의 케이스 클래스를 살펴볼 수는 있지만 관련이 없다고 생각합니다. 그냥 거기 던져 버리고 싶어. –