2012-04-05 1 views
1

클래스를 보유하기 위해 벡터를 사용하려고합니다. 이러한 클래스는 다른 클래스의 메서드를 상속하며 고유 한 메서드도 가지고 있습니다. 내가 문제가되는 것은 객체와 함께 벡터를 사용하여 객체 내의 클래스에서 메소드를 호출하는 것입니다.Java 벡터 <object> 클래스 메서드 액세스

public static void vSort(Vector<Object> vector) { 
vector[0].generate(); 
} 

생성 내가 개체 내에서 학생 클래스를 사용하여 만든 사용자 정의 방법 인에 : 나는 같은 일을 할 거라 생각 했어요.

더 좋은 예를

public class Method { 
protected String name; 

public void method() { 
// some code 
} 
} 
public class Student extends Method { 
protected String last; 

public void setUp() { 
// some code 
} 
} 
public class Main { 
public static void main(String[] args) 
{ 
Vector<Object> vector = new Vector<Object>(); 
Student stu = new Student(); // pretend this generates something 

vector.add(stu); 

} 

전으로 실행하고 문제는 방법을 구축 학생 같은 많은 종류가있다. 나에게 문제가되지 않는 Object를 사용하면 Method 클래스 내의 코드에 액세스해야한다.

+0

ArrayList 가 더 일반적으로 사용되며 약간 더 효율적이라고합니다. 그들은 기본적으로 동일한 방식으로 작동합니다. – barsju

+0

@ barjju 약간 더 효율적이라고는 말할 수 없습니다. '벡터'가 동기화됩니다. – Jeffrey

답변

3

Java에 연산자 오버로드가 없습니다. 그래서 구문은 다음과 같습니다 당신이 Vector<Object>을 가지고 있기 때문에

vector.get(0).generate(); 

그러나, 이것은 귀하의 경우 전혀 작동하지 않습니다, 그리고 Objectgenerate 방법이 없습니다.

[] 접선 노트 : vector은 사실상 더 이상 사용되지 않습니다. 대신 ArrayList을 사용해야합니다.]

2

vector.get(0)을 사용하여 개체를 검색해야합니다.

또한 Objectgenerate()을 선언하지 않으므로 캐스팅하거나 객체를 유형으로 지정해야합니다.

0

Vector<Object>이있는 경우 모든 검색 방법은 Object을 반환하므로 명시 적으로 다운 캐스트하지 않는 한 하위 클래스 메서드를 호출 할 수 없습니다. Vector<YourClass>을 대신 사용해야하므로 벡터에서 벗어난 참조는 YourClass 유형이며 사용자는이를 다운 캐스팅 할 필요가 없습니다.

관련 문제