我正在尝试使用泛型实现堆栈。
这是我拥有的组件,
1)接口:
public interface stackInterface<T>{...}
2)实施:
public class Stack<T> implements stackInterface<T>{...}
3)客户:
stackInterface<Integer> s=new Stack<Integer>();
我只想知道我在做什么是正确的方法还是我错过了什么?
它看起来不错。当然,除了完全错误的命名约定。
Java 中的类型名称使用 CamelCase。与类相比,接口也没有特别命名。Java 中的常用方法是命名接口Stack<T>
和类ImplementationDetailStack<T>
,参见。List<T>
和ArrayList<T>
或LinkedList<T>
。
(我个人更喜欢 .NET 约定以 开头的接口名称I
,例如IStack
,对于接口和Stack
默认实现。)
到目前为止,一切都很好,除了用 CamelCase 命名所有类型并且不要在接口中使用“接口”这个词。应该调用接口Stack
和描述基本实现原理的实现,...Stack
如....
ArrayList
通常我们倾向于为接口保留最好和最短的名称,因为它们出现在方法签名和变量类型中的任何地方,而具体的实现类型只出现在实例化表达式中。
stackInterface有命名java转换的问题。它应该是 StackInterface 。
Java 命名转换 是一种很好的编码习惯。
接口:名称应采用 CamelCase。
参考:http://java.about.com/od/javasyntax/a/nameconventions.htm http://www.javapractices.com/topic/TopicAction.do?Id=58
一个好主意可能是查看java.util.List
接口的源代码及其实现类,例如java.util.ArrayList
使用泛型。您可以从那里学习并应用于您的代码。
一切都很好,除了命名约定。正如 Dan 所建议的那样,采取 List 和 ArrayList。最好在接口中仅使用接口名称,并将接口名称附加到默认实现的 Impl 中。
public interface Stack <T> {
}
public class StackImpl<T> implements Stack {
}
Stack<String> defaultStack=new StackImpl<String>();
对于其他实现,最好使用 List-ArrayList 样式约定。