Java中的通用函数
我对
Java中的一些通用语法不太熟悉.
我遇到了一些像这样的代码: public static<T> T foo(T... a) 有人能够以简洁的方式解释它的含义吗? public static T foo(T[] a) 我查看了Oracle文档,但它们的示例似乎更容易理解:Oracle Generics 解决方法
两件事情:
1)这是一个varargs方法,一种采用可变数量参数的方法.这与采用数组的方法不同(即使在引擎盖下使用数组实现). 您将此方法称为foo(a,b,c)(与foo(arrayWithABC)相反). 2)如果要使用泛型类型占位符T,则必须声明它.这正是第一个< T>确实. 公共静态T foo(T a)和公共静态< T>之间的差异. T foo(T a)是后者为该方法的范围引入了“局部”T.这意味着“方法返回任何类型参数的实例”.在第一个版本中,T需要是在其他地方声明的类型占位符(例如在类中作为整体)或类名. 由于< T>是完全不受限制的,你可以传递任何东西.泛型的作用是将返回值绑定到相同的类型.如果您只有公共静态Object foo(Object a),则可以传入一个Integer并返回一个String. T阻止了这一点. 如果你想限制可接受的类型,你可以做公共静态< T extends Number> T foo(T a). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |