Like volothamp mentioned in its answer. Named Parameters would help a lot and you can emulate something similar like them in Java as described in this question.
Most of the times especially if you are using an api that is used by third parties you want to have data objects that store parameters for constructors or methods that take more then three parameters. This is a pattern called parameter objects. This enables you to do input checking in the parameter object and keep you methods cleaner etc.
If you create a parameter object that has only setters you have a clear naming for the client to see where to put its data. Like in this example:
public printAddress(String name, String street, String city) {...}
print address(name, street, city);
If you use a parameter object you have something like that:
public printAddress(Address address) {...}
Address address = new Address();
address.setName(name);
address.setStreet(street);
address.setCity(city);
printAddress(address);
This is more code but it will be much more readable. If you want to reduce the lines of code needed you could go with method chaining. Make the setters return the object they work on. The code now would look like this:
public printAddress(Address address) {...}
printAddress(new Address().setName(name).setStreet(street).setCity(city))
This looks strange on the first sight but if you are used to it it will make the code smaller more readable and you want have to deal with all the debugging questions from your client.