在java中实例化接口

时间:2014-06-06 02:35:35

标签: java interface

我的理解是,除非您定义实现该接口的匿名内部类,否则无法直接实例化接口。但令我惊讶和困惑的是,我看到一些似乎实例化接口的代码。 这是代码:

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);
 }

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

代码未实例化TaskInfoProvider接口。它使用接口作为类泛型类型参数来实例化泛型类ThreadLocal ....在此过程中没有创建TaskInfoProvider的(假设的)实例....

显然,为了“设置本地线程的值”,您需要一个实现TaskInfoProvider接口的类的实例。但这不是这段代码中发生的事情。