我刚刚遇到这样的问题:我有10个(或者更多)Java类,我想要的所有这些:
显然,原因是这些类的公共超类现在有一个构造函数参数,并且所有扩展类都必须适应。
我无法相信我需要为所有课程手动完成这项工作。 Eclipse必须在其内部具有所有必需的概念,如“构造函数”,“参数”等。有没有为此创建脚本的方法?
我道歉,如果这是微不足道/众所周知的,我必须承认我真的不知道并欣赏任何提示。
答案 0 :(得分:0)
更改每个子类的构造函数签名可能必须使用某种脚本。我不认为IDE会在每个构造函数中自动推断出新参数,因为每个子类都可能以不同的方式使用新参数。
由于您正在使用Eclipse,因此您可以通过选择超类的构造函数并点击alt+shift+c
(重构的快捷方式 - >更改方法签名...)来略微跳过您的第二个要求。
当您通过提供的GUI添加参数时,对该构造函数的所有引用(例如扩展类中的super
调用)也将更新。如果需要,您甚至可以定义默认值。
然后,如果需要,您可以修改每个扩展类的构造函数以包含新参数(遗憾地,手工制作)。
答案 1 :(得分:0)
感谢您的评论和解答。目前似乎没有(广泛)已知的Eclipse内置方法来做我想要的。 简而言之,这就是:
向超类添加新的构造函数参数,同时, 创建 所有扩展类的构造函数中的相同参数并传递给它 参数到超类构造函数
然而,应该注意的是功能
向超类添加新的构造函数参数,并将此参数的默认值添加到所有扩展类
通过refactor -> Change method signature...
工作(感谢@Zircon)。
一个相当明显的解决方案,如果你真的有很多类,那就是写一个脚本。 brahimfes提出了一个Java类,它具有不需要新语言或新工作环境的优点,因为我的问题是特定于Java的。我也认为也许一个sed脚本可以做到这一点。但是,我没有尝试,首先,识别正确的行(构造函数和超类构造函数调用,即使第二个是微不足道的),第二,确定添加参数的正确位置,第三,实际添加它们。可能工作,我没有尝试,我只是怀疑你会在这个脚本上工作多久,直到它没有错误。
现在我终于找到了解决方案。 我意识到在每个子类中我总是有相同的键击(在我手动将新参数添加到超类构造函数之后):
有些程序允许创建这种类型的makros,我得到了其中一个的试用版(我在Mac上)并且这样做了。
当然,这仍然不是我问题的解决方案,因此我不会将此帖标记为解决方案。虽然我现在有一个makro让我几乎完全打字,我仍然需要手动打开编辑器中的每个类,单击正确的行然后激活makro。 该程序仍将为我节省类似要求的时间。但它不是我希望的那样,它将是一些Eclipse内置的脚本语言,可以访问Java语法元素,以获得更高级别的访问,然后正则表达式可以提供。