Если объявить переменную с помощью var (как предлагается в верном решении) следующим образом
var inputStream = Files.newInputStream(Paths.get(in));
то применение метода getClass() к созданному объекту следующим образом
System.out.println(inputStream.getClass());
выдаст следующее: "class sun.nio.ch.ChannelInputStream". Если я правильно понимаю, это означает, что вместо var мы бы могли явно написать класс ChannelInputStream. Однако, следующий код
ChannelInputStream inputStream = Files.newInputStream(Paths.get(in));
не работает. Такого класса просто не находится. Это как так получается? P.S. Саму задачу я решил, указывая вместо var абстрактный класс InputStream, но стало интересно какой класс нам даёт var и отсюда возник такой вопрос.