Students 클래스의 메서드에 액세스하려면 어떻게해야합니까? myList를 인쇄 할 때 students 클래스의 toString을 사용하므로 다른 메서드에 액세스하는 방법을 모르겠습니다. 그게 가능한가?Generics 및 ArrayList
추신 : 저는 이미 프로그램에서 시도하고 잡았습니다. 코드를 더 짧게 만들기 위해 게시하지 않았습니다.
public class DatabaseAccess <T> {
public T[] database;
public ArrayList<T>myList = new ArrayList<T>();
public ArrayList<T> testlist = new ArrayList<T>();
public void userInterface(){
int count = 1;
for (T i : myList){
System.out.println(count++ + ": " + i);
}
}
public void readDatabase(){
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("grocery.bin"));
database = (T[]) in.readObject();
for (int i = 0; i < database.length; i++){
myList.add(database[i]);
}
myList.add((T) "\n");
myList.add((T) "\tStudents:");
ObjectInputStream in1 = new ObjectInputStream(new FileInputStream("students.bin"));
database = (T[]) in1.readObject();
for (int i = 0; i < database.length; i++){
myList.add(database[i]);
}
}
}
public class Student implements Serializable, Comparable{
private String name, id, address;
private double gpa;
public Student(String name, String id, double gpa){
this.name = name;
this.id = id;
this.gpa = gpa;
}
public int compareTo(Object object){
Student student = (Student) object;
if(this.gpa < student.getGpa())
return -1;
else
if(this.gpa > student.getGpa())
return 1;
else
return 0;
}
public String getName(){ return name;}
public String getId(){ return id;}
public double getGpa(){ return gpa;}
public String toString(){ return (String.format("%16s%10.4s%8s", name, id, gpa));}
}
많은 캐스팅이 여기에 있습니다. 적어도 하나 또는 두 개는 발생하지 않아도되고, 누락 된 것으로 보입니다. 무엇을 성취하려고합니까? 스택이 있다면 무엇입니까? 하드 코딩 된 입력 파일을 사용하여이 문제를 재현 할 수 있습니까? – Makoto
나는 Student 클래스의 getMeethods에 액세스하려고 시도하고 있는데, 잘 모르겠습니다. 그리고 거기에 캐스팅은 무엇입니까? 캐스팅이 필요하지 않아요? –
'T'는 항상'String'이며, 타입 매개 변수가 전혀 필요 없다고 생각합니다. 그렇지 않으면 코드를'T' 문자열로 캐스팅하면 목록에 힙 오염이 발생하여 런타임에 코드가 실패하게됩니다. –