此C#通用方法模式的等效Java实现是什么?

时间:2018-10-02 10:18:41

标签: java c# generics lambda

我正在将最初用C#编写的库重写为Java,并尽我所能尽可能地遵循它。但是,这让我感到难过。

这是我想在Java中重新创建的C#方法

public T With<TV>(Func<T, IEditable> func, TV value)
        {
            var pageElement = func(TypedThis);
            pageActions.Add(new WebDriverValuePageAction<TV>(pageElement, value));
            return TypedThis;
        }

这是一个通用方法,用作Selenium Page Object框架的一部分,其中T是BasePage,并且该方法接受继承IEditable接口的任何页面元素。

困扰我的是方法的With<TV>部分以及如何在Java中重新创建它。其他一切都差不多了。我已经能够重新创建 T ,但是无法弄清楚如何随功能一起传递电视(本质上是通用值)。

1 个答案:

答案 0 :(得分:3)

直接等效项为

    public <TV> T With(Function<T, IEditable> func, TV value)
    {
        IEditable pageElement = func.apply(TypedThis);
        pageActions.Add(new WebDriverValuePageAction<TV>(pageElement, value));
        return TypedThis;
    }