1

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

这是我拥有的组件,

1)接口:

public interface stackInterface<T>{...}

2)实施:

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

3)客户:

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

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

4

5 回答 5

4

它看起来不错。当然,除了完全错误的命名约定。

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

(我个人更喜欢 .NET 约定以 开头的接口名称I,例如IStack,对于接口和Stack默认实现。)

于 2012-08-26T09:48:49.897 回答
2

到目前为止,一切都很好,除了用 CamelCase 命名所有类型并且不要在接口中使用“接口”这个词。应该调用接口Stack和描述基本实现原理的实现,...Stack如....ArrayList

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

于 2012-08-26T09:50:25.683 回答
1

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

Java 命名转换 是一种很好的编码习惯。

接口:名称应采用 CamelCase。

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

于 2012-08-26T09:50:16.350 回答
1

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

于 2012-08-26T09:51:41.373 回答
0

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

public interface Stack <T> {

}

public class StackImpl<T> implements Stack {

}

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

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

于 2012-08-26T10:07:41.450 回答