Found this bug in Eclipse today while using the Encapsulate field functionality.
Eclipse Version: Version: 3.1.0 Build id: 200412162000
Create this simple class in eclipse -
public class TestEncapsulate {String a, b; }
1) Select the Field a.
2) Right-click and select Refactor -> Encapsulate Field.
3) Click Ok.
4) The following code is generated -
public class TestEncapsulate {String b; private int a;
/** * @param a The a to set. */ void setA(String a) { this.a = a; }
/** * @return Returns the a. */ String getA() { return a; } }
Problems
a) The field was changed to a private field even though it was package-private earlier.
This is ok by me, since I typically keep the fields as private.
b) The data type was changed from String to int!!!
This is crazy!
The encapsulate field works fine when there is only one package-private field delared in one line (String a;)
It breaks in the above code for both fields 'a' & 'b'.
I have reported this Encapsulate field bug.