|
| 1 | + |
| 2 | +##问题 |
| 3 | +大多数情况下,当我重新导入项目到eclipse的时候,我重写的方法都不能被正确格式化,导致这样的错误: |
| 4 | +> The method must override a superclass method. |
| 5 | + |
| 6 | +需要说明的是这是一个Android项目,不知道什么原因,方法的参数被篡改了,因此,我不得不手动的把他们改回来。 |
| 7 | +例如: |
| 8 | +```java |
| 9 | +list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { |
| 10 | + //这儿的参数名是正确的 |
| 11 | + public void onCreateContextMenu(ContextMenu menu, View v, |
| 12 | + ContextMenuInfo menuInfo) { |
| 13 | + } |
| 14 | +}); |
| 15 | +``` |
| 16 | +初始化的时候被篡改成了这样: |
| 17 | +```java |
| 18 | +list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { |
| 19 | + //这儿的参数被篡改成了这样 |
| 20 | + public void onCreateContextMenu(ContextMenu arg1, View arg2, |
| 21 | + ContextMenuInfo arg3) { |
| 22 | + } |
| 23 | +}); |
| 24 | +``` |
| 25 | +奇怪的是,如果我移除我的代码并使用eclipse自动创建方法的话,它还是会是相同的参数(被篡改的)。因此,我真不知道那儿的问题,它本应该自动格式化代码的。 |
| 26 | +要是手动的去修改被篡改的参数名,那是一个非常痛苦的过程。要是有人能解释为什么会出现这样的情况以及怎样去解决它,我感激不尽。 |
| 27 | +是不是因为我格式化的这个方法,是另一个方法里面的参数而导致的这样的问题呢? |
| 28 | + |
| 29 | +##回答 |
| 30 | +Eclipse的默认执行环境是java 1.5况且你使用了类的声明接口方法(在java 1.6中能使用@Ovrride注释,但是在java 1.5中一个方法只能重写父类的方法) |
| 31 | + |
| 32 | +打开你的项目,然后找到preference并且设置java的编译版本为1.6,同时也确保你的eclipse是使用JRE 1.6 来执行你的程序的。 |
| 33 | + |
| 34 | +Stack Overflow原地址:http://stackoverflow.com/questions/1678122/must-override-a-superclass-method-errors-after-importing-a-project-into-eclips |
| 35 | + |
0 commit comments