InetAddress.getByName/getAllByName for empty host string

Jaikiran Pai jai.forums2013 at gmail.com
Fri Apr 13 14:29:26 UTC 2018


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 " + java.net.InetAddress.getByName(""));
         System.out.println("InetAddress.getAllByName() for empty string 
returns "
             + 
java.util.Arrays.toString(java.net.InetAddress.getAllByName("")));

     }
}

This outputs:

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


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?


-Jaikiran



More information about the core-libs-dev mailing list