возвращаемое значение - часть контракта, и значит его нельзя поменять (вернее, его тип). А использование глобальное переменной - это плохой стиль. Тут нужно работать с объектами и классами (создать нужное поле в классе и возвращать его геттером).
Хм, тоже знаю свинг, но везде, где сказано про создание игр на джава, упоминается libgdx. Посмотрите в сторону этой библиотеки. К тому же, она применяется и в андроиде, так что это хоть как-то перспективно.
А что обратное? символическая ссылка? Если да, то в Files по-моему есть метод проверки, является ли этот путь символической ссылкой (и называется вроде бы так: isSymbolicLink()).
Почему? Логичнее как раз проверять на запрещённые символы: их меньше, и их конечное количество. Хотя если действительно, в качестве разрешённых могут выступать только буквы английского алфавита, то тогда фифти-фифти.