I could not find any references online about this. But just wanted to know if final fields in a class should always be static or is it just a convention. Based
static
Absolutely not. Consider:
class Point { public final int x; public final int y; public Point(int _x, int _y) { x = _x; y = _y; } }
Drop the final, and the class becomes mutable. Add a static, and all your points are the same, and there is no legal way to write the constructor.
final