![](/img/trans.png)
[英]Can an abstract method in Java have a default behavior even if it is overridden?
[英]strange behavior overridden method. I have ann error
我在OSGi項目中有一些模塊。
payment
- payment-api
- payment-impl
在payment-api
我有接口UserService
public interface UserService{
String method1(String p1, int p2);
String method2(String p1);
}
和實施
public class UserServiceImpl implements UserService{
@Override
public String method1(String p1, int p2){
//code
returnt result;
}
@Override
public String method2(String p1){
//code
returnt result;
}
}
而且我的模塊payment-impl
具有依賴性
<dependency>
<groupId>mydomain</groupId>
<artifactId>payment-api</artifactId>
<version>1.0.0</version>
</dependency>
工作正常。 但是現在,如果我嘗試將新的方法添加到UserService
並在UserServiceImpl
覆蓋此方法后出現錯誤:
public interface UserService{
String method1(String p1, int p2);
String method2(String p1);
String test(int a);
}
和
@Override
public String test(int a) {
return "sdfsdff";
}
java:[94,9] method does not override or implement a method from a supertype
但是,如果我刪除@Override
注釋,則一切正常。 我cn不明白為什么? 怎么會這樣?
interface Y{
String method();
}
public class X implemets Y{
@Override
String method(){
return "some string";
}//is error
//------
String method(){
return "some string";
}//is fine
}
如果我不實現此方法,則編譯器會發誓。 默認情況下,IDE用注解覆蓋methosd。 另外,已經實施的另一種方法也可以正常工作而無需注釋
impl
模塊可能引用了api
模塊的陳舊版本。 您可能想重命名1.0.0-SNAPSHOT
版本,清除本地maven存儲庫(通常在~/.m2/repository
),然后清理並重建產品。
我不確定在此處添加SNAPSHOT
版本是否很重要,但是在產品開發過程中這樣做並不是一個壞習慣。
我也不確定為什么您會遇到該模塊的過時版本。 要真正深入研究這個問題,我建議:
mvn install
並且不能僅僅依靠IDE編譯過程,我不確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.