Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse:以编程方式操纵类_Java_Eclipse_Automation - Fatal编程技术网

Java Eclipse:以编程方式操纵类

Java Eclipse:以编程方式操纵类,java,eclipse,automation,Java,Eclipse,Automation,我刚刚遇到一个问题,我有10个(大约)Java类,我想: 将形式参数“String newparam”添加到其构造函数中 将其作为实际参数添加到超级类构造函数的super()调用中(因此,结果应该是super(…,newparam)) 原因很明显,这些类的公共超类现在多了一个构造函数参数,所有扩展类都必须适应 我真不敢相信我需要在所有的课堂上用手来做这件事。Eclipse的内部必须包含所有必需的概念,如“构造函数”、“参数”等。有没有办法为此创建脚本 如果这是琐碎的/众所周知的,我很抱歉,我必须

我刚刚遇到一个问题,我有10个(大约)Java类,我想:

  • 将形式参数“String newparam”添加到其构造函数中
  • 将其作为实际参数添加到超级类构造函数的super()调用中(因此,结果应该是super(…,newparam))
  • 原因很明显,这些类的公共超类现在多了一个构造函数参数,所有扩展类都必须适应

    我真不敢相信我需要在所有的课堂上用手来做这件事。Eclipse的内部必须包含所有必需的概念,如“构造函数”、“参数”等。有没有办法为此创建脚本


    如果这是琐碎的/众所周知的,我很抱歉,我必须承认我真的不知道也不欣赏任何提示。

    更改每个子类的构造函数签名可能必须使用某种脚本。我认为IDE不会在每个构造函数中自动推断出新参数,因为每个子类可能会以不同的方式使用新参数

    由于您使用的是Eclipse,您至少可以通过选择超类的构造函数并点击
    alt+shift+c
    (重构的快捷方式->更改方法签名…)跳过第二个需求

    通过提供的GUI添加参数时,对该构造函数的所有引用(例如扩展类中的
    super
    调用)也将更新。如果需要,甚至可以定义默认值。
    然后,如果需要,您可以修改每个扩展类的构造函数,使其也包含新参数(遗憾的是,手工修改)。

    更改每个子类的构造函数签名可能需要使用某种脚本。我认为IDE不会在每个构造函数中自动推断出新参数,因为每个子类可能会以不同的方式使用新参数

    由于您使用的是Eclipse,您至少可以通过选择超类的构造函数并点击
    alt+shift+c
    (重构的快捷方式->更改方法签名…)跳过第二个需求

    通过提供的GUI添加参数时,对该构造函数的所有引用(例如扩展类中的
    super
    调用)也将更新。如果需要,甚至可以定义默认值。
    然后,如果需要,您可以修改每个扩展类的构造函数,使其也包含新参数(遗憾的是,手工操作)。

    谢谢您的评论和回答。目前似乎没有(广为人知的)Eclipse内置方法来实现我想要的功能。 简言之:

    向超类添加一个新的构造函数参数,同时, 创造 在所有扩展类的构造函数中使用相同的参数并传递 参数传递到超类构造函数

    但应注意的是,该功能

    向超类添加新的构造函数参数,并向所有扩展类添加此参数的默认值

    通过
    重构->更改方法签名…
    (谢谢@zron)工作

    如果你真的有很多类,一个非常明显的解决方案就是编写一个脚本。brahimfes提出了一个Java类,它的优点是不需要新的语言或工作环境,因为我的问题是Java特有的。我还认为sed脚本可能会起作用。然而,我没有尝试,首先,识别正确的行(构造函数和超类构造函数调用,尽管第二行很简单),其次,识别添加参数的正确位置,第三,实际添加它们。可能行得通,我没有尝试,我只是怀疑你会在这样一个脚本上工作多久,直到它没有错误

    现在我终于找到了解决办法。 我意识到我在每个子类中总是有相同的按键(在我手动将新参数添加到超类构造函数之后):

  • 选择构造函数行
  • 将光标放在and和backtrack 3位置(括号)
  • 添加形式参数
  • 往下走一行
  • 转到此行的末尾(通常是super()调用)并回溯一个位置
  • 添加实际参数
  • 有一些程序可以创建这种类型的makros,我得到了其中一个的试用版(我在Mac上),并且是这样做的

    当然,这实际上还不是我问题的解决方案,因此我不会将这篇文章标记为解决方案。虽然我现在有了一个makro,它可以免除我几乎所有的打字,但我仍然需要在编辑器中手动打开每个类,单击正确的行,然后启动makro。
    该计划仍将节省我的时间在未来类似的要求。但这并不是我所希望的,这将是一种Eclipse内置脚本语言,可以访问Java语法元素,从而获得比正则表达式更高级别的访问。

    感谢您的评论和回答。目前似乎没有(广为人知的)Eclipse内置方法来实现我想要的功能。 简言之:

    向超类添加一个新的构造函数参数,同时, 创造 在所有扩展类的构造函数中使用相同的参数并传递 参数传递到超类构造函数

    但应注意的是,该功能

    向超类添加新的构造函数参数,并向所有扩展类添加此参数的默认值

    通过
    重构->更改方法签名…
    (谢谢@zron)工作

    如果你真的有很多类,一个非常明显的解决方案就是编写一个脚本。brahimfes提出了一个Java类,它的优点是不需要新的语言或工作环境,因为我的问题是Java spe