【问题标题】:is there something equivalent to the c# where in java? [duplicate]有没有与java中的c#等价的东西? [复制]
【发布时间】:2021-02-05 13:23:07
【问题描述】:

我有一个功能:

public static bool Append<T>(this List<T> list, T value)
        where T : IComparable<T>
    {
        int l = 0;
        int r = list.Count() - 1;

        int c = 0;

        var com = 0;
        while (l <= r)
        {
            c = (l + r) / 2;
            com = list[c].CompareTo(value);
            if (com > 0) r = c - 1;
            else if (com < 0) l = c + 1;
            else
            {
                list[c] = value;
                return false;
            }

        }

        if (c >= list.Count())
            list.Add(value);

        else
        {
            if (com < 0) c++;
            list.Insert(c, value);
        }

        return true;
    }

我想在 java 中重新创建它,但是有没有与 where T: IComparable&lt;T&gt; 在 java 中?

public static <T> void append(List<T> list)
{
}

我知道 java 有接口 java.lang.Comparable 但我不知道如何在函数中实现它

【问题讨论】:

  • 是的,但由于某种原因,函数不能是静态的,我将把这个问题标记为重复
  • 呃,你应该可以用静态方法做到这一点。你能把你写的东西展示一下吗?
  • @FedericoklezCulloca 我写错了public &lt;T extends Comparable&lt;T&gt;&gt; static int append(List&lt;T&gt; list, T value) 而不是public static &lt;T extends Comparable&lt;T&gt;&gt; int append(List&lt;T&gt; list, T value)
  • 你能删除关于这个问题的重复注释吗?

标签: java c#


【解决方案1】:

您可以在泛型中使用通配符来实现相同的目的。您的方法签名如下所示:

public static void append(List<? extends Comparable> list)

甚至更好,与您的 C# 代码含义完全相同:

public static <T> void append(List<? extends Comparable<T>> list, T value)

【讨论】:

    猜你喜欢
    • 2015-08-04
    • 2011-05-15
    • 1970-01-01
    • 2017-07-27
    • 2022-01-10
    • 1970-01-01
    • 2010-11-28
    • 2011-09-25
    • 2023-03-07
    相关资源
    最近更新 更多