У меня возникнет вопрос, связанный с обобщением java.
У меня есть обобщенный класс LabyrinthImpl с параметром типа T
.Каждый экземпляр имеет двумерный массив T[][] values
.Проблема заключается в конструкторе, где я указываю файл для чтения в двумерный массив символов.
public class LabyrinthImpl<T> implements Labyrinth<T> {
/**
* 2d array to hold information about the labyrinth.
*/
private T[][] values;
/**
* Constructor.
* @param values 2d array to hold information about the labyrinth.
*/
public LabyrinthImpl(T[][] values) {
this.values = values;
}
/**
* Constructor.
* @param file File from which to read the labyrinth.
* @throws IOException
*/
public LabyrinthImpl(File file) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(file));
LinkedList<String> list = new LinkedList<String>();
String line;
int maxWidth = 0;
while((line = in.readLine()) != null)
{
list.add(line);
if(line.length() > maxWidth)
maxWidth = line.length();
}
char[][] vals = new char[list.size()][maxWidth];
for(int i = 0; i < vals.length; i++)
{
vals[i] = list.remove().toCharArray();
}
values = vals; //not working, type mismatch
}
//methods..
}
Я бы хотел установить T[][] values
в char[][] vals
, но здесь происходит несоответствие типов.
Итак, мой вопрос: есть ли способ сообщить конструктору, что параметр типа T следует интерпретировать как Character, чтобы он принимал мой массив 2d char?Какие-либо предложения?Также заранее спасибо!