2013-04-07 3 views
1

Я задавался вопросом, можно ли переопределить метод в Java socket.getInetAddress(), чтобы дать различные результаты, чем /IP. Например, только IP.Разъем getInetAddress метод коррекции

Я знаю, что это небольшая смена, но предпочтительный формат иногда является предпочтительным.

Можно ли это сделать легко или требуется манипуляция строкой? Например. используя substring(1)?

+1

Я не вижу, чтобы этот метод объявлялся окончательным, и класс не был объявлен окончательным, поэтому теоретически, да, это можно сделать. – Makoto

ответ

1

Socket не объявлен final, Socket.getInetAddress не final, вы можете изменить его, даже это не очень хорошая идея ...

В вашей реализации сокета return super.getInetAddress().substring(1); должен работать.

Вы также должны указать свой собственный SocketFactory. Реальность - плохая идея, я считаю.

1

Проблема в том, что классы API никогда не вернут вашу версию Socket, поэтому вы не можете переопределить. Я предлагаю простой метод утилиты, который изменяет адрес в соответствии с вашими потребностями.

+0

Это намерение SocketFactory. – Aubin

1

Если вы хотите, чтобы интерфейс класса лучше соответствовал вашим потребностям, вы можете проверить Facade Pattern.

0

Метод, который вы называете, не производит никакого вывода. Формат, который вы описываете, исходит из метода InetAddress.toString(). Если вы не хотите этого формата, не вызывайте этот метод. Существуют методы InetAddress, чтобы получить только имя хоста или просто адрес. Используй их. Не настоящий вопрос.