为所有 类 添加接口

adding an interface to all classes

我有大约 300 个 类,他们现在需要实施 Serializable。我在想我可以使用 findsed 来做到这一点。

通过查找条件有效

^public class.*{$

在其他作品中找到以 Public Class 开头的行,其中包含一些文本并以 {

结尾

现在我要替换它,所以最后实际上是

implemenets MyInterface {

之前是

public class MyClass {

public class MyClass2 {

输出为

public class MyClass implements MyInterface {

public class MyClass2 implements MyInterface {

我一直在查找反向引用,但它们在我正在测试的 Notepad++ 中似乎很有趣。

任何提示都会很棒。

谢谢

您可以尝试下面的 sed 命令,

$ echo 'public class MyClass {' | sed '/^public class.*{$/s/{$/implements MyInterface {/'
public class MyClass implements MyInterface {

$ echo 'public class MyClass {' | sed 's/^\(public class.*\){$/implements MyInterface {/'
public class MyClass implements MyInterface {

使用这个 sed -r:

sed -r 's/(public +class +\S+ *)\{/ implements MyInterface {/' File.java

如果 java 文件已经有 implements MyInterface,这将跳过替换。然而,在 Java class 声明中,可能有许多情况下任何基于正则表达式的简单 find/replace 都会失败。