如何调用此方法?

Wel*_*Wel 4 delphi

Delphi书中的编码有关于接口约束的这个例子:

1    type
2      IStoppable  =  interface
3        procedure Stop;
4      end;
5
6      TWidget<T: IStoppable>  =  class
7        FProcess: T;
8        procedure StopProcess;
9      end;
10
11   { TWidget<T> }
12
13   procedure  TWidget<T>.StopProcess;
14   begin
15     FProcess.Stop;
16   end;
Run Code Online (Sandbox Code Playgroud)

我在第15行不明白他怎么称呼"停止"方法?是不是FProcess是一个通用变量?那他怎么能从变量中调用一个方法呢?

他怎么能直接从界面调用"停止"方法呢?是不是应该调用实现的方法?

Dav*_*nan 9

FProcess是一种类型T,其中T约束为一个IStoppable或一个派生的接口IStoppable.因此调用您引用的方法调用Stop方法IStoppable.

想象一下,这FProcess被宣布为类型IStoppable.

FProcess: IStoppable;
Run Code Online (Sandbox Code Playgroud)

如果是这样,那么我认为你会理解代码.

每当你发现自己在努力理解通用代码时,这是一种有用的技术.用通用类型替换泛型类型并再次读取代码.理解具体代码通常要容易得多,然后理解将帮助您推广通用代码.

就实现该方法的地方而言,这与具体接口没有什么不同.接口定义了接口,但未指定实现.实现接口的类指定了这个,但是为了使用接口,您不需要知道它.这实际上是接口的操作方式.


Rud*_*uis 5

FProcess被声明为泛型类型T,但声明,在约束,如IStoppable,换句话说:每次T必须是IStoppable(或衍生物)和代码可以肯定的是它可以调用的方法IStoppable就可以了

在接口上调用方法是完全正确的.这是它们存在的主要原因:它们基本上是可以调用的方法列表.

是的,该方法必须在某处实施.这没有显示.