如何在Java中反转类型参数

如何在Java中反转类型参数,java,eclipse,refactoring,Java,Eclipse,Refactoring,我有一个类a,我想将它重构为a,这样所有对它的引用都会被修改。在Eclipse中右键单击该方法,然后重构->更改方法签名,您可以更改其中参数的顺序我认为这在Eclipse中还没有实现。这是一个相当罕见的重构,虽然 但是如果A下面的类型层次结构还不太复杂,请尝试使用此正则表达式搜索替换(其中A | B | C表示A和A的所有子类型,例如B和C): \b(A | b | C) 更新:既然您想匹配更复杂的东西,请尝试以下方法(不使用人工换行): \b(A | b | C)< \s*((?:\w+\?

我有一个类
a
,我想将它重构为
a
,这样所有对它的引用都会被修改。

在Eclipse中右键单击该方法,然后重构->更改方法签名,您可以更改其中参数的顺序

我认为这在Eclipse中还没有实现。这是一个相当罕见的重构,虽然

但是如果
A
下面的类型层次结构还不太复杂,请尝试使用此正则表达式搜索替换(其中
A | B | C
表示
A
A
的所有子类型,例如
B
C
):

\b(A | b | C)
更新:既然您想匹配更复杂的东西,请尝试以下方法(不使用人工换行):

\b(A | b | C)<
\s*((?:\w+\?)(?:\s+(?:扩展|超级)\s+(?:\w+\?))\s*,
\s*((?:\w+\?)(?:\s+(?:扩展|超级)\s+(?:\w+\?))\s*>
取而代之

$1<$3, $2>
1美元

因为您使用的是Eclipse,所以如果您不使用Eclipse(或者其他具有良好重构功能的工具,如果您不使用,强烈建议使用),可以手动检查每个替换的正确性,然后我可以想出两种方法:

第一: 如果您正在使用,那么编写一个只有在正确交换变量时才会成功的测试。然后对方法签名进行更改,并确保测试通过

第二: 1.从方法签名中删除第二个参数,这将在对该方法的所有调用中引发编译错误 2.转到编译失败的每一行,仔细交换变量 3.以新的相反顺序将第二个变量放回方法签名中 4.运行一些测试以确保它仍然按照您期望的方式工作


第二种方法显然是丑陋的。但是,如果您没有使用具有良好重构支持的IDE,那么编译错误是捕获该方法100%调用的好方法(至少在您的项目中)。如果您正在编写一个供其他人或其他程序使用的代码库,那么将该更改传达给所有受影响的方将变得更加复杂。

很抱歉输入错误,是的,我想要
a
OP要求切换泛型类类型参数,而不是方法参数这不是一个方法,这是一个班级宣言。哦,我错了,我看错了问题。在这种情况下,我认为Eclipse没有实现任何东西(即使
vi
知道正则表达式!;-)我最好在regex搜索/replacePS中包含
extends
关键字的选项:如果这运行了1/2h,请不要怪我,尽管…;-)
\b(A|B|C)<
  \s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*,
  \s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*>
$1<$3, $2>