将Java代码转换为delphi的问题

God*_*r75 2 java delphi delphi-xe4

我有一个必须返回通用接口的方法.试图在delphi中制作该方法.但是不确定它应该如何写?有没有人可以帮助我?这是我用Java制作的一个例子:

public < T  extends StandardDataProvider<?>> T GetDataProvider(String dataProviderName) {
    if (dataproviders == null)
        buildDataProviderMap();
    if (dataproviders.containsKey(dataProviderName)) {
        return (T) dataproviders.get(dataProviderName);
    } else
        return null;
}
Run Code Online (Sandbox Code Playgroud)

然后尝试在delphi中做同样的事情..但是不能让它工作?

function TLocalDataProviderFactory. GetDataProvider(DataProviderName: string): IStandardDataProvider;  // Shows errors here? 
begin
  if not Assigned(DataProvider) then
    BuildDataProviderMap;
  if DataProvider.ContainsKey(DataProviderName) then
  begin
    Result := DataProvider.Items[DataProviderName];
  end
  else
  begin
    Result:= nil;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 6

Delphi泛型约束不支持通配符.因此,您可以管理的最接近的涉及两个通用参数.该函数看起来像这样:

function GetDataProvider<S; T: IStandardDataProvider<S>>(...): T;
Run Code Online (Sandbox Code Playgroud)