据我所知,这是一种典型方法的定义:
modifier returnValueType methodName(list of parameters) {
// Method body;
}
但是,如果您有多个修饰符,(例如public
,static
,<GenericType>
)是否应该有特定的订单?
这是我过去考试的一个问题的模型答案:
<S> public void emptyList(CyclicQueue<S> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
正如您所看到的那样,通用修饰符<S>
出现在public
之前,但我在某些地方看到了相反的情况:
public <S> void emptyList(CyclicQueue<S> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
订购这些修饰符的正确或更传统的方法是什么?
答案 0 :(得分:3)
这个website为您提供了修饰符排序的粗略指导。
泛型也应该在公共方法之后声明。
public <S> void emptyList(CyclicQueue<S> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
不是
<S> public void emptyList(CyclicQueue<S> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
模型答案不起作用,因为您的修饰符public,protected,private默认优先于泛型类型。
答案 1 :(得分:2)
泛型类型不是修饰符,泛型方法应该放在返回类型之前,如
public <S> void emptyList(CyclicQueue<S> queue) {
// ^^^^ return type
while(!queue.isEmpty()) { queue.pop(); }
}
您的问题的模型答案将无法编译。
答案 2 :(得分:1)
我不相信它在access关键字之前是合法的。换句话说,
public <S> void emptyList(CyclicQueue<S> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
是对的。 Java中的主要功能实际上回答了您的大部分问题 -
public static void main(String[] args){
在这里您可以看到正确的顺序:访问级别,静态,返回类型。添加泛型类型只是返回类型的替代。