[英]Writing DAO : how to override or implements the interface methods in abstract class?
[英]Class that implements an interface in a jar, but does not override the methods
我的項目對apache commons-dbcp有依賴性,我們正在使用1.2.2版
我們正在使用的commons-dbcp版本具有org.apache.commons.dbcp.BasicDataSource
類,該類實現javax.sql.DataSource
,該類又實現了java.sql.Wrapper
,但是BasicDataSource
不實現Wrapper
定義的方法(jdk 1.6 。X)。 但是我的項目有一個擴展了BasicDataSource
的類( MyClass
),編譯時沒有任何問題-我有點困惑。 在IntelliJ中,我將MyClass
視為錯誤。
該類已使用javax.sql.DataSource
接口的早期版本(Java 5或更早版本)進行編譯。 Wrapper
接口是Java 6 / JDBC 4.0引入的。
當類加載器加載實現接口但未實現所有新方法的類時,它會允許它。 當實際調用該方法時,會引發NoSuchMethodError
(我相信它會對丟失的方法進行存根處理以引發此異常)。 這允許-有限-前向兼容性:只要實際上不調用該方法,該實現就可以工作。
這也意味着,當您對該類進行子類化時,只要該類的源不屬於您的項目,它的行為就好像所有方法都已實現(即使尚未實現)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.