c# - 在 Java 中调用泛型方法时如何显式提供类型参数?

标签 c# java generics explicit

想象一下用 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/

相关文章:

java - 在App Engine中,是否有一种方法可以获取所有子实体而不包含相同类型的父实体?

java - 有没有办法在我的网站上获得 zestimate,而不必每次都去 Zillow

c# - 将表类型作为 T 传递给通用列表

java编译器奇怪: field declared in same class,但 "not visible"

c# - WPF 应用程序在未右键单击并选择 "Run as administrator"的情况下运行时出现性能问题

c# - .NET 自定义控制台

c# - 打开嵌入了 base64 图像的 XML Altchunk Html

c# - TeamCity 无法使用 C# 7 构建项目

java - 如何在调用继续进程时结束 C Shell 脚本

java - 代码在 Eclipse 中编译但不是 javac : curried lambdas with functional subinterface. 哪个是正确的?