The javadoc of InetAddress.getByName(host) and getAllByName(host) states that:

If the host is null then an InetAddress representing an address of the loopback interface is returned.

For non-null values the javadoc explains what the implementation does. However, there seems to be no mention of what it does with an empty string (length == 0) value for the host param. Right now, the implementation seems to treat an empty value the same way it treats the host == null case and returns an InetAddress representing the loopback address.

Consider the following example:

public class InetAddressTest {
    public static void main(final String[] args) throws Exception {
        System.out.println("InetAddress.getByName() for empty string returns " +""));         System.out.println("InetAddress.getAllByName() for empty string returns "             + java.util.Arrays.toString("")));


This outputs:

InetAddress.getByName() for empty string returns localhost/
InetAddress.getAllByName() for empty string returns [localhost/]

Is it intentional for these APIs to behave this way for empty string? If so, should the javadoc be updated to explicitly state this behaviour?


Reply via email to