您是否有Java8功能接口的列表(不是Java.util.function中列出的那些)?

您是否有Java8功能接口的列表(不是Java.util.function中列出的那些)?,java,java-8,functional-interface,Java,Java 8,Functional Interface,我想看看是否有办法获得Java8中所有功能接口的列表。我不是说这页上的列表: 相反,我指的是比较器、FileFilter和Runnable等接口—API文档显示的接口功能如下: @功能接口 公共接口可运行 有这些东西的完整清单吗 谢谢大家! 解决方法:例如,您可以使用eclipse来收集这样的列表 只需跳转到该注释的源代码,然后全局搜索其用法 或者,您可以使用反射和编写代码来扫描某个JAR中的所有类,以检查每个类是否使用该注释。这需要一些努力,但我看不到任何重大障碍;只是坐下来做而已 但当然,

我想看看是否有办法获得Java8中所有功能接口的列表。我不是说这页上的列表:

相反,我指的是比较器、FileFilter和Runnable等接口—API文档显示的接口功能如下:

@功能接口 公共接口可运行

有这些东西的完整清单吗


谢谢大家!

解决方法:例如,您可以使用eclipse来收集这样的列表

只需跳转到该注释的源代码,然后全局搜索其用法

或者,您可以使用反射和编写代码来扫描某个JAR中的所有类,以检查每个类是否使用该注释。这需要一些努力,但我看不到任何重大障碍;只是坐下来做而已

但当然,真正的答案可能是:这可能是一个xy问题;我们更应该关注你认为你需要知道的“为什么”

使用Eclipse方法,下面是运行库中标记为
@functioninterface
的接口的实际列表,不包括
java.util.function.*

java.awt.KeyEventDispatcher
java.awt.KeyEventPostProcessor
java.io.FileFilter
java.io.FilnameFilter
java.lang.Runnable
java.lang.Thread.UncaughtExceptionHandler
java.nio.file.DirectoryStream.Filter
java.nio.file.PathMatcher
java.time.temporal.TemporalAdjuster
java.time.temporal.TemporalQuery
java.util.Comparator
java.util.concurrent.Callable
java.util.logging.Filter
java.util.prefs.PreferenceChangeListener
jdk.management.resource.ResourceApprover
jdk.management.resource.ResourceId

当您浏览到并单击顶部的链接时,API文档中提供了一个用
@functioninterface
注释的所有接口的列表

但必须强调的是,注释的存在是非常重要的。每个接口只有一个
abstract
方法与
java.lang.Object
public
方法不匹配,可以通过lambda表达式或方法引用来实现,尽管这并不一定意味着结果将满足为特定
接口指定的附加契约

有,所以当您试图通过lambda表达式实现它们时,编译器不会反对。其中只有少数有注释。一些没有注释的应用程序仍然可以顺利工作,例如
ActionListener
InvocationHandler
ThreadFactory
,而其他应用程序由于附加约束(如
Comparable
ProtocolFamily
异常
)而不适用。在“”中也讨论了这一点


因此,虽然
@functional interface
记录了可用作lambda表达式或方法引用的目标类型的意图,但其他接口类型可能仍然适用于相同的目的,但您必须亲自调查合同,以确定使用是否适当。

为了完整性,下面列出了可以通过lambda表达式或方法引用实现的所有JRE接口,尽管并非所有这些接口都有用或在语义上正确。此列表不包括像JavaFX这样的扩展API

java.awt.ActiveEvent java.awt.Composite java.awt.KeyEventDispatcher java.awt.KeyEventPostProcessor java.awt.PrintGraphics java.awt.Stroke java.awt.Transparency java.awt.datatransfer.ClipboardOwner java.awt.datatransfer.FlavorListener java.awt.dnd.DragGestureListener java.awt.dnd.DragSourceMotionListener java.awt.event.AWTEventListener java.awt.event.ActionListener java.awt.event.AdjustmentListener java.awt.event.HierarchyListener java.awt.event.ItemListener java.awt.event.MouseWheelListener java.awt.event.TextListener java.awt.event.WindowStateListener java.awt.image.ImageObserver java.awt.image.TileObserver java.awt.image.renderable.RenderedImageFactory java.awt.print.Printable java.awt.print.PrinterGraphics java.beans.ExceptionListener java.beans.PropertyChangeListener java.beans.VetoableChangeListener java.beans.beancontext.BeanContextChildComponentProxy java.beans.beancontext.BeanContextContainerProxy java.beans.beancontext.BeanContextProxy java.beans.beancontext.BeanContextServiceRevokedListener java.io.Closeable java.io.FileFilter java.io.FilenameFilter java.io.Flushable java.io.ObjectInputValidation java.lang.AutoCloseable java.lang.Comparable java.lang.Iterable java.lang.Readable java.lang.Runnable java.lang.Thread.UncaughtExceptionHandler java.lang.instrument.ClassFileTransformer java.lang.management.PlatformManagedObject java.lang.reflect.GenericArrayType java.lang.reflect.InvocationHandler java.net.ContentHandlerFactory java.net.CookiePolicy java.net.DatagramSocketImplFactory java.net.FileNameMap java.net.ProtocolFamily java.net.SocketImplFactory java.net.URLStreamHandlerFactory java.nio.file.DirectoryStream.Filter java.nio.file.PathMatcher java.nio.file.WatchEvent.Modifier java.nio.file.attribute.AttributeView java.nio.file.attribute.FileAttributeView java.nio.file.attribute.FileStoreAttributeView java.rmi.activation.ActivationInstantiator java.rmi.activation.Activator java.rmi.server.RMIClientSocketFactory java.rmi.server.RMIFailureHandler java.rmi.server.RMIServerSocketFactory java.rmi.server.Unreferenced java.security.DomainCombiner java.security.Guard java.security.KeyStore.LoadStoreParameter java.security.PrivilegedAction java.security.PrivilegedExceptionAction java.security.cert.CertPathParameters java.security.cert.CertPathValidatorResult java.security.cert.CertStoreParameters java.security.interfaces.DSAKey java.security.interfaces.ECKey java.security.interfaces.RSAKey java.security.spec.ECField java.sql.DriverAction java.time.chrono.Era java.time.temporal.TemporalAdjuster java.time.temporal.TemporalQuery java.util.Formattable java.util.Observer java.util.concurrent.Callable java.util.concurrent.Executor java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory java.util.concurrent.RejectedExecutionHandler java.util.concurrent.ThreadFactory java.util.function.BiConsumer java.util.function.BiFunction java.util.function.BiPredicate java.util.function.BinaryOperator java.util.function.BooleanSupplier java.util.function.Consumer java.util.function.DoubleBinaryOperator java.util.function.DoubleConsumer java.util.function.DoubleFunction java.util.function.DoublePredicate java.util.function.DoubleSupplier java.util.function.DoubleToIntFunction java.util.function.DoubleToLongFunction java.util.function.DoubleUnaryOperator java.util.function.Function java.util.function.IntBinaryOperator java.util.function.IntConsumer java.util.function.IntFunction java.util.function.IntPredicate java.util.function.IntSupplier java.util.function.IntToDoubleFunction java.util.function.IntToLongFunction java.util.function.IntUnaryOperator java.util.function.LongBinaryOperator java.util.function.LongConsumer java.util.function.LongFunction java.util.function.LongPredicate java.util.function.LongSupplier java.util.function.LongToDoubleFunction java.util.function.LongToIntFunction java.util.function.LongUnaryOperator java.util.function.ObjDoubleConsumer java.util.function.ObjIntConsumer java.util.function.ObjLongConsumer java.util.function.Predicate java.util.function.Supplier java.util.function.ToDoubleBiFunction java.util.function.ToDoubleFunction java.util.function.ToIntBiFunction java.util.function.ToIntFunction java.util.function.ToLongBiFunction java.util.function.ToLongFunction java.util.function.UnaryOperator java.util.logging.Filter java.util.prefs.PreferenceChangeListener java.util.spi.ResourceBundleControlProvider javax.accessibility.Accessible javax.activation.CommandObject javax.activation.DataContentHandlerFactory javax.imageio.IIOParamController javax.imageio.event.IIOReadWarningListener javax.imageio.event.IIOWriteWarningListener javax.imageio.metadata.IIOMetadataController javax.imageio.spi.ServiceRegistry.Filter javax.management.DescriptorRead javax.management.NotificationFilter javax.management.NotificationListener javax.management.openmbean.CompositeDataView javax.management.remote.JMXAddressable javax.management.remote.JMXAuthenticator javax.management.remote.JMXConnectorProvider javax.management.remote.JMXConnectorServerProvider javax.naming.NameParser javax.naming.Referenceable javax.naming.event.NamingListener javax.naming.ldap.HasControls javax.naming.spi.InitialContextFactory javax.naming.spi.InitialContextFactoryBuilder javax.naming.spi.ObjectFactory javax.naming.spi.ObjectFactoryBuilder javax.naming.spi.StateFactory javax.net.ssl.HandshakeCompletedListener javax.net.ssl.HostnameVerifier javax.print.FlavorException javax.print.event.PrintJobAttributeListener javax.print.event.PrintServiceAttributeListener javax.security.auth.callback.CallbackHandler javax.sound.midi.ControllerEventListener javax.sound.midi.MetaEventListener javax.sound.sampled.LineListener javax.sql.RowSetReader javax.sql.RowSetWriter javax.swing.JComboBox.KeySelectionManager javax.swing.ListCellRenderer javax.swing.Painter javax.swing.UIDefaults.ActiveValue javax.swing.UIDefaults.LazyValue javax.swing.event.CaretListener javax.swing.event.ChangeListener javax.swing.event.HyperlinkListener javax.swing.event.ListSelectionListener javax.swing.event.RowSorterListener javax.swing.event.TableModelListener javax.swing.event.TreeSelectionListener javax.swing.event.UndoableEditListener javax.swing.table.TableCellRenderer javax.swing.text.Highlighter.HighlightPainter javax.swing.text.Position javax.swing.text.TabExpander javax.swing.text.ViewFactory javax.swing.tree.RowMapper javax.swing.tree.TreeCellRenderer javax.tools.DiagnosticListener javax.tools.OptionChecker javax.xml.bind.ValidationEventHandler javax.xml.crypto.KeySelectorResult javax.xml.crypto.NodeSetData javax.xml.crypto.URIDereferencer javax.xml.crypto.XMLStructure javax.xml.stream.EventFilter javax.xml.stream.StreamFilter javax.xml.stream.XMLReporter javax.xml.stream.XMLResolver javax.xml.stream.util.XMLEventConsumer javax.xml.transform.URIResolver javax.xml.ws.AsyncHandler javax.xml.ws.Provider javax.xml.ws.handler.HandlerResolver javax.xml.xpath.XPathFunction javax.xml.xpath.XPathFunctionResolver javax.xml.xpath.XPathVariableResolver org.omg.CORBA.DomainManagerOperations org.omg.CORBA.portable.InvokeHandler org.omg.CORBA.portable.ValueBase org.omg.CORBA.portable.ValueFactory org.omg.IOP.CodecFactoryOperations org.omg.PortableInterceptor.PolicyFactoryOperations org.omg.PortableServer.AdapterActivatorOperations org.w3c.dom.DOMErrorHandler org.w3c.dom.UserDataHandler org.w3c.dom.events.DocumentEvent org.w3c.dom.events.EventListener org.w3c.dom.ls.LSResourceResolver org.w3c.dom.views.AbstractView org.w3c.dom.views.DocumentView org.xml.sax.EntityResolver
这里是指向
@functioninterface
的使用页面的链接:

下面列出了所有常用的和语义无关的参数和返回类型

此处提供完整列表:(programming.guide)

→ T、 U→ T、 U→ R T、 T→ T T、 U→ 布尔值 → 布尔值 T→ 双人,双人→ 双重的 双重的→ 双重的→ R 双重的→ 布尔值 → 双重的 双重的→ int 双重的→ 长的 双重的→ 双重的 T→ R int→ int int→ int→ R int→ 布尔值 → int int→ 双重的 int→ 长的 int→ int 长,长→ 长的 长的→ 长的→ R 长的→ 布尔值 → 长的 长的→ 双重的 长的→ int 长的→ 长的 T、 双重的→ T、 int→ T、 长的→ T→ 布尔值 → T T、 U→ 双重的 T→ 双重的 T、 U→ int T→ int T、 U→ 长的 T→ 长的 T→ T
反射在另一个方面会更有用:它(可能)是找到未显式标记注释的有效函数接口的唯一方法。当然,这需要对类层次结构、默认方法、
Object
方法等进行更复杂的分析。另外,考虑到这种“扩展”搜索例程的复杂性……或者您可以转到,浏览到并单击顶部的。这真的很容易…这是超级啤酒。我真的去了javadoc。。。但是在我的手机上;我没有看到那个链接。所以我假设注释(与类/接口相反)没有“此处使用”的信息!基尔。你应该回答这个问题@伊丽莎白:记住这一点。JRE中大约有200个接口满足技术约束,因此当您试图通过lambda表达式实现它们时,编译器不会反对。只有极少数有注释。尽管没有注释,但其中一些操作仍能顺利工作,例如
ActionListener
InvocationHandler
ThreadFactory
,其他操作则不适合,如
Comparable
ProtocolFamily
异常。另请参见……这两个想法中的哪一个?我想是日食吧?如果你
RunnableBiConsumer<T, U>                    T, U →
BiFunction<T, U, R>                 T, U → R
BinaryOperator<T>                   T, T → T
BiPredicate<T, U>                   T, U → boolean
BooleanSupplier                          → boolean
Consumer<T>                            T →
DoubleBinaryOperator      double, double → double
DoubleConsumer                    double →
DoubleFunction<R>                 double → R
DoublePredicate                   double → boolean
DoubleSupplier                           → double
DoubleToIntFunction               double → int
DoubleToLongFunction              double → long
DoubleUnaryOperator               double → double
Function<T, R>                         T → R
IntBinaryOperator                    int → int
IntConsumer                          int →
IntFunction<R>                       int → R
IntPredicate                         int → boolean
IntSupplier                              → int
IntToDoubleFunction                  int → double
IntToLongFunction                    int → long
IntUnaryOperator                     int → int
LongBinaryOperator            long, long → long
LongConsumer                        long →
LongFunction<R>                     long → R
LongPredicate                       long → boolean
LongSupplier                             → long
LongToDoubleFunction                long → double
LongToIntFunction                   long → int
LongUnaryOperator                   long → long
ObjDoubleConsumer<T>           T, double →
ObjIntConsumer<T>                 T, int →
ObjLongConsumer<T>               T, long →
Predicate<T>                           T → boolean
Supplier<T>                              → T
ToDoubleBiFunction<T, U>            T, U → double
ToDoubleFunction<T>                    T → double
ToIntBiFunction<T, U>               T, U → int
ToIntFunction<T>                       T → int
ToLongBiFunction<T, U>              T, U → long
ToLongFunction<T>                      T → long
UnaryOperator<T>                       T → T