Ben String parametresini kabul eden ve genel ile nesneyi dönüştüren bir Yardımcı Program yöntemi uyguluyorum. Aşağıdaki kodla ancak zayıf noktası zayıf noktası , ayrıştırması gereken her nesnenin bir dize yapıcısına sahip olması gerekir. Nesnenin String kurucusuna sahip olması gerektiğini tanımlamanın bir yolu yoktur. Bunu polimorfizm veya jenerik kullanarak gerçekleştirmenin başka bir yolu var mı?Dizgeyi Nesne dönüştürmek için genel yolu
AAA.java
public class AAA {
private String id;
private String description;
public AAA(String str) {
// Do parsing...
}
Yardımcı yöntemi.
public static <T extends Base> List<T> readFile(File file, Class<T> type) {
List<T> collection = new ArrayList<T>();
// Read file line by line and convert to Instance
Constructor<T> ctor = type.getConstructor(String.class);
T newInstance = ctor.newInstance(line);
if (newInstance != null) {
collection.add(newInstance);
}
return collection;
}
Kullanımı:
List<AAA> list = FileUtil.readFile(file, AAA.class);
Dize hangi biçimde? Ya da senin dosyan. CSV virgülle ayrılmış veya JSON'da mı yoksa böyle bir şey mi? –
Dizenin formatına karar verebilecek olan siz misiniz? –
@DanielvanHeerden bu bir CSV'dir. – swemon