Issue
I'm experimenting with NetBeans and really like how some things are done. I'm coming from Eclipse. Features like the ability to sort the source code items aren't working. Using:
Product Version: Apache NetBeans IDE 12.1
Java: 1.8.0_131; Java HotSpot(TM) 64-Bit Server VM 25.131-b11
Runtime: Java(TM) SE Runtime Environment 1.8.0_131-b11
System: Linux version 4.8.6-300.fc25.x86_64 running on amd64; UTF-8; en_US (nb)
User directory: /home/bpracht/.netbeans/12.1
Cache directory: /home/bpracht/.cache/netbeans/12.1
In the sample class, I'd like to sort this in a conventional way (ie. private fields sorted at the top, public methods at the bottom. After clicking Format "Alt-Shift-F" on the class below, it does not alter the order any further:
class Token<T> {
public Token offsetStart(final Long value) {
this.offsetStart = value;
return this;
}
public Token length(final Long value) {
this.length = value;
return this;
}
public Token fullyResolved(final Boolean value) {
this.fullyResolved = value;
return this;
}
public Token parentToken(final Token value) {
this.parentToken = value;
return this;
}
public Token firstChildToken(final Token value) {
this.firstChildToken = value;
return this;
}
public Token lastChildToken(final Token value) {
this.lastChildToken = value;
return this;
}
public Token previousToken(final Token value) {
this.previousToken = value;
return this;
}
public Token nextToken(final Token value) {
this.nextToken = value;
return this;
}
public Token lambdaSetValue(final LambdaSetValue<T> value) {
this.lambdaSetValue = value;
return this;
}
private Long offsetStart;
private Long length;
private Boolean fullyResolved;
private Token parentToken;
private Token firstChildToken;
private Token lastChildToken;
private Token previousToken;
private Token nextToken;
private LambdaSetValue<T> lambdaSetValue;
public Long getLength() {
return length;
}
public long getOffsetStart() {
return offsetStart;
}
public void setOffsetStart(long offsetStart) {
this.offsetStart = offsetStart;
}
public void setLength(Long length) {
this.length = length;
}
}
interface LambdaSetValue<T> {
void setValue(T value);
}
In Tools-Options-Editor->Formatting I have this: Members Sort Order: Fields Static Fields Static Initializers Static Methods Static Classes Classes Instance Initializers Constructors Methods
(checked) Sort Members By Visibility has: Private Protected Default Public
(checked) Keep Getters and Setters Together (checked) Sort Memoers in Groups Alphabetically (unchecked) Sort uses dependencies Insertion Point (Ordered in Category
I want it to at least put
private Long offsetStart after private Long length;
Thanks in advance Woodsman
Solution
You can order the members by using the Source menu then choosing Organize Members:
The result of organizing members using my settings:
class Token<T> {
private Long offsetStart;
private Long length;
private Boolean fullyResolved;
private Token parentToken;
private Token firstChildToken;
private Token lastChildToken;
private Token previousToken;
private Token nextToken;
private LambdaSetValue<T> lambdaSetValue;
public Token offsetStart(final Long value) {
this.offsetStart = value;
return this;
}
public Token length(final Long value) {
this.length = value;
return this;
}
public Token fullyResolved(final Boolean value) {
this.fullyResolved = value;
return this;
}
public Token parentToken(final Token value) {
this.parentToken = value;
return this;
}
public Token firstChildToken(final Token value) {
this.firstChildToken = value;
return this;
}
public Token lastChildToken(final Token value) {
this.lastChildToken = value;
return this;
}
public Token previousToken(final Token value) {
this.previousToken = value;
return this;
}
public Token nextToken(final Token value) {
this.nextToken = value;
return this;
}
public Token lambdaSetValue(final LambdaSetValue<T> value) {
this.lambdaSetValue = value;
return this;
}
public Long getLength() {
return length;
}
public long getOffsetStart() {
return offsetStart;
}
public void setOffsetStart(long offsetStart) {
this.offsetStart = offsetStart;
}
public void setLength(Long length) {
this.length = length;
}
}
interface LambdaSetValue<T> {
void setValue(T value);
}
As mentioned in my comment, both private Long offsetStart
and private Long length
have the same access levels and the same type with no functional code difference, and Netbeans does not apply alphabetical order (in English).
Answered By - sorifiend
Answer Checked By - Clifford M. (JavaFixing Volunteer)