Class 객체가 주어질 때 객체 생성에 대한 간단한 질문. 아니면 내가 다르게 이것에 관해서 갈 필요가 있습니다. 우선, 필자의 계획에서 File 객체의 배열을 취하여 각각을 Set으로 읽는 메소드를 작성했습니다.이 세트는 각 세트가 목록에 추가되고 목록이 반환됩니다. (오래는 물론 문자열이 포함로)주어진 클래스 객체 (Java)에서 객체 생성
private static List<Set<String>> loadFiles(File[] files, Class whatType, Charset charSet){
List<Set<String>> setList = new ArrayList<Set<String>>(files.length);
try {
for(File f : files){
BufferedInputStream bs = new BufferedInputStream(new FileInputStream(f));
InputStreamReader r = new InputStreamReader(bs, charSet);
BufferedReader br = new BufferedReader(r);
Set<String> set = new HashSet<>(); //This is the problem line
String line = null;
while((line = br.readLine()) != null){
set.add(line.trim());
}
br.close();
setList.add(set);
}
return setList;
} catch (FileNotFoundException e) {
//Just return the empty setlist
return setList;
} catch (IOException e) {
//return a new empty list
return new ArrayList<Set<String>>();
}
}
을하지만 내가 원하는 것은 인스턴스화하는 설정의 유형을 지정하는 방법을 사용자에게 허용하는 것입니다 : 아래는 내가 가지고있는 것입니다. 이것이 'whatType'매개 변수의 용도입니다.
내 모든 연구는 클래스 이름이 지정된 객체를 인스턴스화하는 방법으로 안내해 주었지만 실제로는 여기에있는 것이 아닙니다. 당신은 클래스가 인수 없음의 액세스 가능한 생성자가 가정하면
예 : 'HashSet' 대'TreeSet'? –
왜? 일반적으로 Java에서 이와 같은 방법으로 자신 만의 새로운 세트를 반환 할 것으로 예상됩니다. 호출자의 버전을 사용해야하는 이유가 있다면 그 파일을 전달하십시오. – chrylis
@chrylis 이것의 주된 이유는 내부적으로 제가 수행하고있는 프로젝트가 파일에서 많은로드를하고 그 문자열을 세트에 저장한다는 것입니다 : 해시, 트리, Set을 구현하는 우리 자신의 클래스. 사용되는 Set의 유형은 상황에 따라 다릅니다. 이렇게하면 코드 기반을 단순화하고 캐스팅을 통해 상용구를 적게 작성할 수 있습니다. 이는 기본 구현이 중요한 경우에 해당됩니다. – Hangman4358