Может быть, вы ищете перечисления?
public enum Planet
{
MERCURY (2.4397e6),
VENUS (6.0518e6),
EARTH (6.37814e6);
private final double radius;
Planet(double radius)
{
this.radius = radius;
}
public double radius()
{
return radius;
}
}
Вам не нужно создавать enum
экземпляры самостоятельно. Перечисления могут иметь значения, например radius()
в примере. Вы можете добавить к ним поведение, чтобы они могли вести себя как обычные классы, определив для них абстрактные методы, например
public enum Planet
{
...
abstract double weightOnSurface(double weight);
...
}
Вы можете перебирать перечисления следующим образом:
for (Planet p : Planet.values())
{
System.out.println(p.radius());
}
Так что, похоже, они соответствуют всем вашим критериям.