接口中的泛型?

时间:2012-08-26 09:47:04

标签: java generics interface

我正在尝试使用泛型实现堆栈。

以下是我所拥有的组件,

1)接口:

public interface stackInterface<T>{...}

2)实现:

public class Stack<T> implements stackInterface<T>{...}

3)客户端:

stackInterface<Integer> s=new Stack<Integer>();

我只是想知道我在做什么是正确的做法,还是我错过了什么?

5 个答案:

答案 0 :(得分:4)

看起来很好。当然,除了完全错误的命名约定外。

Java中的类型名称使用CamelCase。与类相比,接口也没有特别命名。 Java中通常的方法是命名接口Stack<T>和类ImplementationDetailStack<T>,参见。 List<T>ArrayList<T>LinkedList<T>

(我个人赞成使用I启动接口名称的.NET约定,例如接口为IStack,默认实现为Stack。)

答案 1 :(得分:2)

到目前为止,非常好,除了使用CamelCase命名所有类型,并且不在界面中使用“interface”一词。应该调用接口Stack和实现...Stack,其中...描述基本实现原则,如ArrayList

通常我们倾向于为接口保留最好和最短的名称,因为它们出现在方法签名和变量类型的任何地方,而具体的实现类型只出现在实例化表达式中。

答案 2 :(得分:1)

stackInterface存在命名java转换的问题。它应该是StackInterface。

Java Naming conversion是一种很好的编码习惯。

接口:名称应该在CamelCase中。

价:HTTP://java.about.com/od/javasyntax/a/nameconventions.htm http://www.javapractices.com/topic/TopicAction.do?Id=58

答案 3 :(得分:1)

一个好主意可能是查看java.util.List接口的源代码,其java.util.ArrayList之类的实现classe正在使用泛型。您可以从那里学习并应用于您的代码。

答案 4 :(得分:0)

除了命名约定外,一切都很好。正如Dan所建议的那样,采取了List和ArrayList。最好在接口中只使用接口名称,并在接口名称后附加Impl作为默认实现。

public interface Stack <T> {

}

public class StackImpl<T> implements Stack {

}

Stack<String> defaultStack=new StackImpl<String>();

对于其他实现,最好使用List-ArrayList样式约定。