Hallo erstmal, wie ihr sehen könnt bin ich ein ziemlicher Anfänger und kenne mich mit Fachtermina auch überhaupt nicht aus. Ich hab jetzt aber mein fabel fürs Programmieren wiederentdeckt komme aber mit Java gerade nicht weiter. Man möge mir bitte die unpräzise Schreibweise meines Problemes nachsehen.
Nun denn:
Zur groben Problemdarstellung:
Ich möchte CSV auslesen, und deren daten möglichst effizient verarbeiten. Nun fehlt mir natürlich der weitblick um die effizienz zu beurteilen, und so begnüge ich mich eigentlich gerade damit möglichst allgemeingültigen Code der Oberklassen zu schreiben, dabei bin ich über die Generics gestolpert.
Mein Programm soll diverese Arten von CSV-Dateien einlesen und das möglichst allgemein(generisch).
Das einlesen und verarbeiten an sich ist eigentlich gar kein Problem, bei mir haperts aber gerade daran, die oberklasse so zu schreiben, dass die abgeleiteten klassen objekte generieren und in Hashsets speichern, welche dann unterschiedlich viele Felder haben.
Hier mal mein kläglicher, und offensichtlich vergeblicher Versuch:
Da ist wahrscheinlich schon n Denkfehler oder n riesiger Konzeptionsfehler drinne, den ich aber irgendwie nicht ausfindig machen kann.
Das Programm prüft lediglich ob das Object "obj" Felder hat, und meint dann das es gar keine Felder gibt, sodass nichts zugewiesen wird
Ich bin mir zudem auch total unsicher wie man nun "sicher" und "gut" casten darf, kann darauf noch jmd ein wenig eingehen?
Mag mich bitte jmd bei der Handnehmen ;(
Vielen dank schonma fürs Lesen.
gruß
shakesbiier. ( mit Tippfehler schon bei der Registierung)
Nun denn:
Zur groben Problemdarstellung:
Ich möchte CSV auslesen, und deren daten möglichst effizient verarbeiten. Nun fehlt mir natürlich der weitblick um die effizienz zu beurteilen, und so begnüge ich mich eigentlich gerade damit möglichst allgemeingültigen Code der Oberklassen zu schreiben, dabei bin ich über die Generics gestolpert.
Mein Programm soll diverese Arten von CSV-Dateien einlesen und das möglichst allgemein(generisch).
Das einlesen und verarbeiten an sich ist eigentlich gar kein Problem, bei mir haperts aber gerade daran, die oberklasse so zu schreiben, dass die abgeleiteten klassen objekte generieren und in Hashsets speichern, welche dann unterschiedlich viele Felder haben.
Hier mal mein kläglicher, und offensichtlich vergeblicher Versuch:
Java:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
import java.lang.reflect.*;
@SuppressWarnings("serial")
public class MyHashSet<E> extends HashSet<E> {
protected String filepath;
protected HashSet<E> MySet = new HashSet<E>();
protected void createSetFromFile(){
String[] parts;
E obj = (E) new Object();
Field[] fields = obj.getClass().getFields();
if(filepath!=null){
try {
BufferedReader in = new BufferedReader(new FileReader(this.filepath));
do{
parts = in.readLine().split(",");
for(int f=0;f<fields.length;f++){
fields[f].set(obj, fields[f].getClass().cast( parts[f]));
MySet.add(obj);
System.out.println(parts[f]);
}
}while(in.readLine()!= null);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
System.out.println("filepath == null");
}
public MyHashSet(String filepath){
super();
this.filepath = filepath;
}
public MyHashSet(Collection<E> c){
super(c);
}
}
Da ist wahrscheinlich schon n Denkfehler oder n riesiger Konzeptionsfehler drinne, den ich aber irgendwie nicht ausfindig machen kann.
Das Programm prüft lediglich ob das Object "obj" Felder hat, und meint dann das es gar keine Felder gibt, sodass nichts zugewiesen wird
Ich bin mir zudem auch total unsicher wie man nun "sicher" und "gut" casten darf, kann darauf noch jmd ein wenig eingehen?
Mag mich bitte jmd bei der Handnehmen ;(
Vielen dank schonma fürs Lesen.
gruß
shakesbiier. ( mit Tippfehler schon bei der Registierung)
Zuletzt bearbeitet: