Eli*_*eth 13 java java-8 functional-interface
我试图看看是否有任何方法可以获得Java 8中作为功能接口的所有接口的列表.我不是在谈论这个页面上的列表:
https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
相反,我在谈论像Comparator,FileFilter和Runnable这样的接口--API文档显示的接口是这样的功能:
@FunctionalInterface公共接口Runnable
这些地方有完整的清单吗?
谢谢!
Hol*_*ger 17
@FunctionalInterface当您浏览到FunctionalInterface类文档并单击顶部的USE链接时,API文档中提供了所有可用注释的接口列表.
但必须强调的是,注释的存在并不是制作interface功能界面所必需的.每个接口只有一个abstract方法与一个方法不匹配public,java.lang.Object可以通过lambda表达式或方法引用来实现,但这并不一定意味着结果将满足为特定方法指定的附加合同interface.
JRE中大约有200个接口满足技术约束,因此当您尝试通过lambda表达式实现它们时,编译器不会反对.只有少数人有注释.其中有些没有标注的仍然顺利工作,例如ActionListener,InvocationHandler或者ThreadFactory,而另一些是不适合的,由于像附加的约束Comparable,ProtocolFamily,FlavorException.这也在" 为什么不在JDK中符合条件的所有接口上使用@FunctionalInterface?"
因此,虽然@FunctionalInterface文档意图可用作lambda表达式或方法引用的目标类型,但其他接口类型可能仍然适用于相同的目的,但您必须自己调查合同以断定使用是否合适.
解决方法:例如,您可以使用 eclipse 来收集这样的列表。
只需跳转到该注释的来源,然后全局搜索它的用法。
或者,您可以使用反射并编写代码来扫描某些 JAR 中的所有类,以检查每个类是否使用该注释。这需要一些努力,但我没有看到任何重大障碍。这只是坐下来做。
但当然,真正的答案可能是:这可能是一个 xy 问题;我们应该更关注您认为需要了解的“为什么”。
使用@GhostCat的 Eclipse方法,这是@FunctionalInterface在运行时库中标记为的实际接口列表,不包括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
Run Code Online (Sandbox Code Playgroud)
为了完整起见,这里列出了可以通过 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。未引用的 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
| 归档时间: |
|
| 查看次数: |
4331 次 |
| 最近记录: |