public interface Wait<F> 
{
<T> T until(Function<F, T> isTrue);
}我在网上看到的有2个地方不明白,java中  返回类型T前面为何还要<T>呢? 我是学.net 这个该怎么理解的。还有就是这个接口涉及到2个泛型,F和T,我不太明白。好像C# 不支持这样的写法,求解!

解决方案 »

  1.   

    Wait<F> :<F>说明这是一个泛型类,F是类的泛型参数<T> T until(Function<F, T> isTrue); 这是一个泛型方法,java里面定义泛型方法,需要在返回值类型之前加上<T>,来指明这是一个泛型方法,否则,还以为T是一个具体的类呢。
      

  2.   

    <>代表的是泛型,最初学习的时候,可以直接把<...>的内容屏蔽掉,当他不存在。
    public interface Wait
    {
    T until(Function isTrue);
    }
    这次懂了么?
    泛型的出现,很大程度上规范了输入,约定了参数类型。但是在编译的时候,JVM并不承认有泛型的存在,而至遇到<..>直接过滤掉。
      

  3.   

    public interface Wait
    {
    T until(Function isTrue);
    }这里并有没规定until方法的返回类型,在继承接口的类中,实现该方法需要如何来指定该接口这个T呢?
      

  4.   

    public interface Wait<T>{
      T until(Function isTrue)
    }
    上面这样的写法和C# 类似 感觉很好理解但是如果这样Public interface Wait<T>
    {
      F until(Function<T,F> isTrue)
    }
    这里的F就不怎么好理解了,因为在实现接口的时候无法给定F,难道需要定义方法的时候给定么?比如Public WaitInstance<string>
    {
       public int until(Function<string,int> isTrue)
    {}
    }
    这样么?