I have this following piece of code:
public abstract class UCMService{ private String service; protected DataMap dataMap = new DataMap();
Short answer: Because the spec says so.
Long answer: It would be very strange for the constructor to be unable to use inline-initialized fields.
You want to be able to write
SomeService myService = new SomeService(); public MyConstructor() { someService.doSomething(); }