Java泛型方法 显式类型说明

一般来说,泛型方法的类型参数都是靠形参或者返回值赋值推断出来的(一般多为靠形参推断),但是也可以显示地给泛型方法以类型说明。所以本文就讲一下如何给泛型方法以显式的类型说明。

class One<T> {
    <T> void memberF(T t) {
        System.out.println(t);
    }
    static <T> void staticF(T t) {
        System.out.println(t);
    }
    void testF() {//One类定义内部
        this.<String>memberF("str");//调用成员泛型方法
        One.<String>staticF("str");//调用静态泛型方法
    }
}

public class test {//One类定义外部
    public static void main(String[] args) {
        One<Integer> o = new One<Integer>();
        o.<String>memberF("str");//调用成员泛型方法
        One.<String>staticF("str");//调用静态泛型方法
        o.testF();
    }
}

首先说下非静态即成员的泛型方法:

  • 在类定义外部,需要通过对象来调用成员方法,而显示类型说明则在.方法名之间,形如o.<String>memberF("str")
  • 在类定义内部,本来可以直接调用成员方法的,但现在需要通过脱裤子放屁的this来调用成员方法,因为这样显示类型说明就可以在在.方法名之间了,形如this.<String>memberF("str")

然后说下静态的泛型方法:

  • 在类定义外部,必须通过类名来调用静态方法,而显示类型说明则在.方法名之间,形如主函数里的One.<String>staticF("str")
  • 在类定义内部,本来可以直接调用静态方法的,但现在需要通过脱裤子放屁的类名来调用静态方法,因为这样显示类型说明就可以在在.方法名之间了,形如testF函数里的One.<String>staticF("str")
  • 我知道也可以通过对象名或this来调用静态方法,但这种不推荐的方式我不想强调了。
发布了171 篇原创文章 · 获赞 130 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/anlian523/article/details/100867943