是否有IntelliJ重构允许自动将枚举转换为类,从而将其枚举值转换为static final
个字段?
我似乎无法找到任何关于它的东西,我只找到有关提取常量但不是我正在寻找的东西。
例如,我想把这样的枚举变成一个:
public enum Planet {
MERCURY (3.303e+23, 2.4397e6),
VENUS (4.869e+24, 6.0518e6),
EARTH (5.976e+24, 6.37814e6),
MARS (6.421e+23, 3.3972e6),
JUPITER (1.9e+27, 7.1492e7),
SATURN (5.688e+26, 6.0268e7),
URANUS (8.686e+25, 2.5559e7),
NEPTUNE (1.024e+26, 2.4746e7);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
// getters here
}
进入这样一个类:
public class Planet {
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
// getters here
}
enum
关键字更改为{{1 },不需要这么复杂的重构)注意:当然有人会做出改变的原因是偏离主题,请避免在这个帖子中讨论它。
答案 0 :(得分:3)
我找不到它的链接。但是,有人一直在谈论Java 9或10的枚举类不是从Enum
类继承而来的(所有'枚举'都是“只是自动隐藏扩展Enum的类”(不是引用,而是一种简单的方法)想到他们。))。从而允许extends
正常工作。我认为它甚至已经在Java 8中进行过讨论,但是在寻找更多坚如磐石的内容方面却处于次要地位。 lambda等等。
所以如果将来你可以扩展枚举,我不会感到惊讶。
编辑:
(以为这是在这里,但没有注意我上一次的编辑。)
我已经做到了这一点,并且只使用了Notepad ++,Kate,Eclipse(我当时正在使用的任何编辑器)中的“替换”功能,或者我使用gnu的awk命令来进行字符串操作。 (我已经完成了很多类似的操作。使用各种方法)一旦你学习了一些基本的正则表达式,就可以很容易地操作这样的字符串文件。
例如,你要替换(在'仅选择'的顶行内,如果在IDE /编辑器中)
1)<tab or 3/4 spaces>
public static final Planet
2)(
= new Planet(
3)将单词enum
更改为class
你已经完成了。
答案 1 :(得分:1)
作为@RC。说,看起来目前没有这样的重构功能。
我最终使用multicursors并按照建议手动输入内容。