0
我的理解是一個接口不能直接實例化,除非你定義了一個實現該接口的匿名內部類。但令我驚訝和困惑的是,我看到一些似乎實例化接口的代碼。 下面是代碼:在java中實例化一個接口
public final class SqlProviders
{
private static boolean installed_;
private static ThreadLocal<SqlAggregateProvider> fortaskInfo_
= new ThreadLocal<TaskInfoProvider>();
}
public interface TaskInfoProvider
{
int getTaskIndex();
int getTaskCount();
long getSessionId();
long getStatementId();
long getFunctionInstanceId();
boolean isTaskInfoAvailable();
void setTaskInfoAvailable(boolean available);
}
誰能請解釋一下嗎?
你認爲接口在那個代碼中被實例化了嗎? –
這用泛型類型參數'TaskInfoProvider'實例化一個'ThreadLocal'類型的對象;它沒有任何地方實例化'TaskInfoProvider'。更多信息在這裏:http://docs.oracle.com/javase/tutorial/java/generics/ –
這甚至編譯?我希望編譯錯誤:類型不匹配:不能從ThreadLocal轉換爲ThreadLocal –
Bohemian