想象一下用 C# 编写的以下代码:
public class Provider<T>
{
T GetValue(); // implementation skipped for brevity
}
//
public class Converter<T1, T2>
{
T2 Convert(T1 value);// implementation skipped for brevity
}
//
public class SomeClass // No Generics Here
{
public T2 DoSomething<T1, T2>()
{
T1 value = new Provider<T1>().GetValue();
T2 result = new Converter<T1, T2>().Convert(value);
return result;
}
}
// and the usage
...
SomeClass some = new SomeClass();
SomeOtherType result = some.DoSomething<SomeType, SomeOtherType>();
是否可以使用 Java 实现相同的目标 - 我想知道如何通过在方法用法中提供类型参数来调用 Java 中的方法,如上面所示。我已经在 .NET 中完成了此操作,并且我知道 Java 支持类型约束和推理,我只是用语法搞乱了它。
最佳答案
Provider 和 Converter 都很好,你的 DoSomething 方法应该像这样重写:
public <T1, T2> T2 doSomething() {
T1 value = new Provider<T1>().GetValue();
T2 result = new Converter<T1, T2>().Convert(value);
return result;
}
可以像这样使用:
SomeClass instance = new SomeClass();
Integer something = instance.<String, Integer>doSomething();
关于c# - 在 Java 中调用泛型方法时如何显式提供类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715285/