标准接口

时间:2010-05-18 20:38:27

标签: java interface

我已经使用Java一段时间了,我一直听说CloneableIterable和其他X - able等接口。

我想知道在所有这些中是否有一个列表,更重要的是 - 你经常使用哪些日常用途?

例如,我读过Cloneable被认为写得不好而且没有被广泛使用。

8 个答案:

答案 0 :(得分:10)

来自API文档:

AccessibleStreamable
AdapterActivatorOperations
Callable
Cloneable
Closeable
Comparable
Compilable
Destroyable
Externalizable
Flushable
Formattable
Invocable
ItemSelectable
Iterable
JMXAddressable
Joinable
Pageable
Printable
Readable
Referenceable
Refreshable
Runnable
Scrollable
Serializable
StateEditable
Streamable
Transferable
TypeVariable
TypeVariable
VM_TRUNCATABLE

我使用Cloneable,Comparable,Iterable,Runnable,当然还有 Throwable : - )

答案 1 :(得分:5)

您最有可能实施的接口是:
java.lang.Comparable
java.lang.Runnable
java.io.Serializable

您最有可能调用方法但未自行实现的接口是:
java.lang.Appendable(StringBuffer / StringBuilder / Writers)
java.lang.CharSequence(String / StringBuffer / StringBuilder)
java.lang.Iterable(收藏品,明确或for Blah blah : List<Blah>
java.lang.Readable(读者)
java.io.Closeable(Streams)
java.io.Flushable(Streams)
java.util.Collection(收藏)
java.util.Deque(收藏)
java.util.List(收藏)
java.util.Map(收藏)
java.util.Set(收藏)

最容易在脸上爆炸的界面:
java.lang.Cloneable

编辑:哎呀,Throwable不是界面。

通常,编写复制构造函数而不是使用clone()方法更好。

答案 2 :(得分:4)

这是java中所有*类和接口的列表。只有少数几个被广泛使用:我会将ComparableRunnable添加到您的列表中。

$ jar tf $JAVA_HOME/jre/lib/rt.jar | grep [a-z]able\.class | grep -v ^com | grep -v ^sun | sort
java/awt/Adjustable.class
java/awt/Container$WakingRunnable.class
java/awt/datatransfer/Transferable.class
java/awt/Dialog$WakingRunnable.class
java/awt/ItemSelectable.class
java/awt/print/Pageable.class
java/awt/print/Printable.class
java/awt/ScrollPaneAdjustable.class
java/io/Closeable.class
java/io/Externalizable.class
java/io/Flushable.class
java/io/Serializable.class
java/lang/Appendable.class
java/lang/Cloneable.class
java/lang/Comparable.class
java/lang/Iterable.class
java/lang/ProcessEnvironment$Variable.class
java/lang/Readable.class
java/lang/reflect/TypeVariable.class
java/lang/Runnable.class
java/lang/Throwable.class
java/rmi/activation/Activatable.class
java/util/Collections$SelfComparable.class
java/util/concurrent/Callable.class
java/util/concurrent/Executors$PrivilegedCallable.class
java/util/Formattable.class
java/util/Hashtable.class
java/util/Observable.class
javax/accessibility/AccessibleStreamable.class
javax/lang/model/type/TypeVariable.class
javax/management/remote/JMXAddressable.class
javax/naming/Referenceable.class
javax/script/Compilable.class
javax/script/Invocable.class
javax/security/auth/Destroyable.class
javax/security/auth/Refreshable.class
javax/sql/rowset/Joinable.class
javax/swing/JSlider$1SmartHashtable.class
javax/swing/JTable$ThreadSafePrintable.class
javax/swing/plaf/basic/BasicFileChooserUI$FileTransferHandler$FileTransferable.class
javax/swing/plaf/basic/BasicTextUI$TextTransferHandler$TextTransferable.class
javax/swing/plaf/basic/BasicTransferable.class
javax/swing/RepaintManager$DisplayChangedRunnable.class
javax/swing/Scrollable.class
javax/swing/SwingWorker$DoSubmitAccumulativeRunnable.class
javax/swing/TablePrintable.class
javax/swing/text/DefaultStyledDocument$ChangeUpdateRunnable.class
javax/swing/TransferHandler$PropertyTransferable.class
javax/swing/undo/StateEditable.class
org/omg/CORBA/portable/Streamable.class

答案 3 :(得分:1)

你是对的。 Cloneable并部分回答您的问题,我从不使用它。有关更多信息,请与Joshua Bloch一起阅读this interview

答案 4 :(得分:1)

Java库的javadocs中有所有接口的列表 - 按照tree链接然后搜索“Interface Hierarchy”部分。

答案 5 :(得分:0)

Runnable是我最常用的。

答案 6 :(得分:0)

可比较是我一直使用的。有一个列表:http://java.sun.com/j2se/1.5.0/docs/api/但它是巨大的。 (你必须滚动页面的大约2/3才能进入界面树。

答案 7 :(得分:0)

有很多接口,就像有很多类,枚举和异常一样。如果你只是孤立地看待接口,你将看不到完整的图片。有些界面是名词形容词(-able),其他界面则不是 - 而且除了任何技术区别之外,对英语的合理性的划分也是如此。

最好在您尝试解决的区域进行调查,而不是查看JRE中可用的接口 - 大多数情况在您考虑到特定问题情形之前没有多大意义,并在与他们的合作者的背景。

当您开始时,从java.lang包中的接口开始,然后java.iojava.util,可能java.util.concurrent,这将为您提供良好的基础,然后研究具体的应用领域。

祝你好运!

相关问题