Hallo ,
Ich bin neu in Java, habe vorher jahre c# programmiert und weiß nicht wie ich
folgendes in Java umsetze...
versuche die Klassen java.io.File und jcifs.smb Abstrakt zu verwenden.
Ich habe eine Klasse <FileDatabrowser> ,welche diverse Suchen, Filter und Konvertierungen
für alle gelesenen(oder geschriebenen) Files macht.
Nun ist es für meine Klasse egal ob die daten über SMB(jcifs) oder IO.FILE kommen
und ich versuche nun mittels Interfaces (in C# hatte ich delegaten verwendet)
die zwei Klassen abstrakt anzusprechen (polymorphismus).
Dazu übergebe ich in der methode <getdir> den Interface Datentyp<i_File> und versuche
alle sachen über die Interface instanz zu machen.
DAS Problem is an dieser Stelle
(i_File file : f.listFiles())
ich kann nicht über die elemente des Interfaces loopen
gibt es da irgendeine Lösung ?
in c# hätte ich f.listfiles und alle weiteren funktionen per delegate umgeändert
--FILE.IO Wrapper
--SMB.JCIFS Wrapper
-- HAUPTKLASSE verwendet entweder SMB oder FILE IO
Ich bin neu in Java, habe vorher jahre c# programmiert und weiß nicht wie ich
folgendes in Java umsetze...
versuche die Klassen java.io.File und jcifs.smb Abstrakt zu verwenden.
Ich habe eine Klasse <FileDatabrowser> ,welche diverse Suchen, Filter und Konvertierungen
für alle gelesenen(oder geschriebenen) Files macht.
Nun ist es für meine Klasse egal ob die daten über SMB(jcifs) oder IO.FILE kommen
und ich versuche nun mittels Interfaces (in C# hatte ich delegaten verwendet)
die zwei Klassen abstrakt anzusprechen (polymorphismus).
Dazu übergebe ich in der methode <getdir> den Interface Datentyp<i_File> und versuche
alle sachen über die Interface instanz zu machen.
DAS Problem is an dieser Stelle
(i_File file : f.listFiles())
ich kann nicht über die elemente des Interfaces loopen
gibt es da irgendeine Lösung ?
in c# hätte ich f.listfiles und alle weiteren funktionen per delegate umgeändert
Java:
public interface i_File {
String getName();
String getPath();
...and many others
}
--FILE.IO Wrapper
Java:
public class genFile extends java.io.File implements i_File
{
...constructors
@Override
public String getName(){
return super.getName();
}
@Override
public String getPath(){
return super.getPath();
}
}
--SMB.JCIFS Wrapper
Java:
public class genSmb extends SmbFile implements i_File
{
...constructors
@Override
public String getName(){
return super.getName();
}
@Override
public String getPath(){
return super.getPath();
}
}
-- HAUPTKLASSE verwendet entweder SMB oder FILE IO
Java:
public class FileDatabrowser
{
public void getdir(i_File f)
{
FileData fileData;
if (f != null)
{
for (i_File file : f.listFiles())
{
if (file.canRead())
{
fileData = new FileData();
FileDataSet(fileData,file);
fileDataList.add(fileData);
}
}
}
}
}
Zuletzt bearbeitet von einem Moderator: