Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接口中的泛型?_Java_Generics_Interface - Fatal编程技术网

Java 接口中的泛型?

Java 接口中的泛型?,java,generics,interface,Java,Generics,Interface,我正在尝试使用泛型实现堆栈 这是我正在使用的组件 1接口: public interface stackInterface<T>{...} 2实施: public class Stack<T> implements stackInterface<T>{...} 3客户: stackInterface<Integer> s=new Stack<Integer>(); 我只是想知道我所做的是正确的还是遗漏了什么?看起来还行。当然,除了

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

这是我正在使用的组件

1接口:

public interface stackInterface<T>{...}
2实施:

public class Stack<T> implements stackInterface<T>{...}
3客户:

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

我只是想知道我所做的是正确的还是遗漏了什么?

看起来还行。当然,除了完全错误的命名约定之外

在Java用例中键入名称。此外,与类相比,接口并没有专门命名。Java中常用的方法是命名接口堆栈和类ImplementationDetailStack,cf.List和ArrayList或LinkedList


就我个人而言,我倾向于使用I来启动接口名的.NET约定,例如,IStack用于接口,堆栈用于默认实现。

它看起来还行。当然,除了完全错误的命名约定之外

public interface Stack <T> {

}

public class StackImpl<T> implements Stack {

}

Stack<String> defaultStack=new StackImpl<String>();
在Java用例中键入名称。此外,与类相比,接口并没有专门命名。Java中常用的方法是命名接口堆栈和类ImplementationDetailStack,cf.List和ArrayList或LinkedList


就我个人而言,我倾向于使用I启动接口名称的.NET约定,例如,接口的IStack和默认实现的堆栈。

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

public interface Stack <T> {

}

public class StackImpl<T> implements Stack {

}

Stack<String> defaultStack=new StackImpl<String>();
这是一个很好的编码实践

接口:名称应为大写

参考:http://java.about.com/od/javasyntax/a/nameconventions.htm

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

这是一个很好的编码实践

接口:名称应为大写

参考:http://java.about.com/od/javasyntax/a/nameconventions.htm

到目前为止,一切都很好,除了用CamelCase命名所有类型,不要在接口中使用interface这个词。接口应被称为堆栈和实现…堆栈,其中。。。描述基本的实现原理,如ArrayList中的


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

到目前为止,很好,除了使用CamelCase命名所有类型,并且在接口中不使用interface这个词。接口应被称为堆栈和实现…堆栈,其中。。。描述基本的实现原理,如ArrayList中的


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

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

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

除了命名约定之外,一切都很好。按照Dan的建议,使用take at列表和ArrayList。最好在接口中只使用接口名,并在默认实现中使用接口名附加Impl

public interface Stack <T> {

}

public class StackImpl<T> implements Stack {

}

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

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

除了命名约定之外,一切都很好。按照Dan的建议,使用take at列表和ArrayList。最好在接口中只使用接口名,并在默认实现中使用接口名附加Impl

public interface Stack <T> {

}

public class StackImpl<T> implements Stack {

}

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

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

您的最后一段可能会引发一场无休止的争论,因此即使提及它也毫无意义。大多数Java开发人员之所以不使用I前缀,是因为它没有增加任何价值。Java设计人员认为在类声明扩展和实现中区分类和接口继承就足够了,我倾向于不同意。类和接口的使用频率高于创建频率。在我看来,在使用中,能够一目了然地看到变量是接口类型还是实际实现是非常有益的。另外,我经常在编写List l=new List时绊倒,只是为了注意,再次强调,该List是一个接口,我必须查找实现列表,这只是一个示例;当我调用一个方法返回一个对我来说足够的列表时,还有更多模糊的例子。我不需要知道它是一个接口。为什么?当我学习类与接口时,我真的很喜欢用名词来表示类,用形容词来表示接口。所有的Eclipse代码库都尊重。。。惯例。你的最后一段可能会引发一场无休止的辩论,所以我很喜欢
连提都没有意义。大多数Java开发人员之所以不使用I前缀,是因为它没有增加任何价值。Java设计人员认为在类声明扩展和实现中区分类和接口继承就足够了,我倾向于不同意。类和接口的使用频率高于创建频率。在我看来,在使用中,能够一目了然地看到变量是接口类型还是实际实现是非常有益的。另外,我经常在编写List l=new List时绊倒,只是为了注意,再次强调,该List是一个接口,我必须查找实现列表,这只是一个示例;当我调用一个方法返回一个对我来说足够的列表时,还有更多模糊的例子。我不需要知道它是一个接口。为什么?当我学习类与接口时,我真的很喜欢用名词来表示类,用形容词来表示接口。所有的Eclipse代码库都尊重。。。我会尝试使用内置类。虽然已经有了一个堆栈,但是Deque可能是一个更好的选择。Peter,尽管存在常见的集合类,但它仍然是学习泛型并编写泛型的一个好方法。主要原因是,至少一本幼稚的藏书是很容易写的,因此不会让人太过偏离手头的要点。这看起来不像是有人仅仅因为需要一个堆栈而不知道已经有了一个堆栈就重新发明了轮子。我会尝试使用内置类。虽然已经有了一个堆栈,但是Deque可能是一个更好的选择。Peter,尽管存在常见的集合类,但它仍然是学习泛型并编写泛型的一个好方法。主要原因是,至少一本幼稚的藏书是很容易写的,因此不会让人太过偏离手头的要点。这看起来不像是有人仅仅因为需要一堆而不知道已经有了一堆而重新发明了轮子。