У этих методов одинаковое erasure, т.е. типы параметров становятся одинаковыми после удаления из них параметров generics. Java не позволяет делать перегрузки таким образом. Либо называйте методы по-разному, либо добавляйте параметры. Да у вас и реализация-то одинаковая, пользуйтесь параметрическим полиморфизмом:
public static void WriteToFile(ArrayList list, String filePath, boolean append)
{
try(FileWriter writer = new FileWriter(filePath, append))
{
for (Object o : list) {
writer.write(o);
}
writer.append('\n');
writer.flush();
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
Эта штука заменяет оба метода.
Хотя там у Writer перегрузка тоже через одно место сделана... можно так тогда:
public static void WriteToFile(ArrayList list, String filePath, boolean append)
{
try(FileWriter writer = new FileWriter(filePath, append))
{
for (Object o : list) {
if (o instanceof Integer)
writer.write((Integer)o);
else
writer.write(String.valueOf(o));
}
writer.append('\n');
writer.flush();
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
Не очень красиво с этим instanceof внутри, но по крайней мере не дублируем целый метод.
Да, и методы в Java принято с маленькой буквы называть, это не сишарп.
Помогите пожалуйста, как сделать правильнее