Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Inheritance Java8中的静态方法_Inheritance_Java 8_Static Methods - Fatal编程技术网

Inheritance Java8中的静态方法

Inheritance Java8中的静态方法,inheritance,java-8,static-methods,Inheritance,Java 8,Static Methods,Java8允许接口具有静态方法。如果有人解释在哪种情况下我们可能需要使用静态方法进行接口,这将非常有帮助 提前感谢。可以找到以下资源: Java接口静态方法是接口的一部分,我们不能将其用于实现类对象 Java接口静态方法非常适合提供实用方法,例如空值检查、集合排序等 Java接口静态方法通过不允许实现类重写它们来帮助我们提供安全性 我们无法为对象类方法定义接口静态方法,我们将得到编译器错误,因为“此静态方法无法对对象隐藏实例方法”。这是因为它在java中是不允许的,因为 对象是所有类的基类,我们

Java8允许接口具有静态方法。如果有人解释在哪种情况下我们可能需要使用静态方法进行接口,这将非常有帮助

提前感谢。

可以找到以下资源:

  • Java接口静态方法是接口的一部分,我们不能将其用于实现类对象
  • Java接口静态方法非常适合提供实用方法,例如空值检查、集合排序等
  • Java接口静态方法通过不允许实现类重写它们来帮助我们提供安全性
  • 我们无法为对象类方法定义接口静态方法,我们将得到编译器错误,因为“此静态方法无法对对象隐藏实例方法”。这是因为它在java中是不允许的,因为
  • 对象是所有类的基类,我们不能有一个类级静态方法和另一个具有相同签名的实例方法
  • 我们可以使用java接口静态方法来删除实用程序类,如集合,并将其所有静态方法移动到相应的接口,这将很容易找到和使用

  • 你搜索过jdk源代码了吗?至少举两个例子如何:

     Function.identity()
    
    其实施方式如下:

    static <T> Function<T, T> identity() {
        return t -> t;
    }
    
    通常,我将它们视为返回该接口实例的静态工厂方法

    我在代码库()中使用了一个很好的例子:


    据我所知-

    1.这些方法不能被继承它的类重写

    2.它们只能由该接口的功能访问(不得重写)

    因此,只要您希望接口的函数(不是静态的,也不是重写的)使用该函数(是静态的),就可以使用它们

    因此,您可以在其中使用自己的业务逻辑、自己的排序方法、一些限制或边界

    因此,它可以像有人调用你的函数一样使用,你可以在其他函数的帮助下在其中完成自己的工作。这就像其他程序员实现了您的界面,使用了一些功能,为自己的程序提供了一些支持(例如,可以保存笔记、计划会议等的日历)


    但是请记住,您不应该重写调用这些静态函数的函数。

    您是否尝试在Google上搜索类似“Java8接口静态方法”的内容?
    static <T> Predicate<T> isEqual(Object targetRef) {
        return (null == targetRef)
                ? Objects::isNull
                : object -> targetRef.equals(object);
    } 
    
    public interface UncheckedCloseable extends Runnable, AutoCloseable {
        @Override
        default void run() {
            try {
               close();
            } catch (Exception ex) {
               throw new RuntimeException(ex);
            }
        }
    
        static UncheckedCloseable wrap(AutoCloseable c) {
           return c::close;
        }
    
        default UncheckedCloseable nest(AutoCloseable c) {
            return () -> {
                try (UncheckedCloseable c1 = this) {
                    c.close();
                }
            };
        }
     }