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