1

我想在方法调用中提供一个接口。根据给定的接口,该方法应该创建一个实例。为此,我使用泛型为方法提供不同类型的接口。这里有一个例子:

static <T> T createClient(T, String endpointAddress) {
  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean()
  factory.setServiceClass(T.class)
  factory.setAddress(endpointAddress)
  (T) factory.create() // error -> java.lang.IllegalArgumentException: java.lang.Class is not an interface
}

// AccessibleClient is an interface. call method
createClient(AccessibleClient, "http://localhost/service")

我不知道我的方法是否是合适的解决方案。

4

1 回答 1

1

您不能说T.class——在 Java 中,信息在运行时不可用。

根据gontard评论,您可能想要这样的东西:

static <T> T createClient ( Class<T> t, String endpointAddress )
{
    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setServiceClass( t );
    factory.setAddress( endpointAddress );
    return (T) factory.create();
}

createClient( AccessibleClient.class, "...");

(另外,在 Java 中你需要分号和return关键字——这是 Groovy 还是什么?)

于 2013-04-23T22:42:37.703 回答