当前位置: 首页 > 面试题库 >

您可以编写无法实现的接口吗?

华景焕
2023-03-14
问题内容

这与java中的最终接口有关。在讨论中,有一个关于接口的最终概念是模棱两可的。最终接口是否意味着它不能具有子接口?这是否意味着它无法实现?

这个问题是第一个问题:您是否可以编写一个最终接口,以便编译器阻止您实现它?


问题答案:

正如我将展示的,可以使用代理来实现上面的接口。更有意义的问题是,为什么要尝试创建无法实现的界面?即使从哲学角度来说,它似乎也很肤浅。

import java.lang.reflect.Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

class NoFinal
{
    public static void main(String[] a) throws Throwable
    {
        FinalInterface o = (FinalInterface) Proxy.newProxyInstance(FinalInterface.class.getClassLoader(), new Class[]{FinalInterface.class}, new InvocationHandler()
        {
            public Object invoke(Object proxy, Method method, Object[] args)
            {
                System.out.println(method);
                return null;
            }
        });
        Method[] methods = FinalInterface.class.getDeclaredMethods();
        methods[0].invoke(o, new Object[]{null});
        methods[1].invoke(o, new Object[]{null});
    }
}

这不会在编译或运行时产生错误,它表明您可以使用两个方法都可以使该接口成为真实的实例。



 类似资料:
  • 问题内容: 在Java 8中,我有类似以下内容: 有没有一种方法可以从ImplementsB调用默认的功能接口行为,而不必创建匿名内部类并调用该内部类? 这会有副作用(两次调用ImplementsA的方法),需要调用父级的实现,然后让子级的实现能够调用子级的默认实现,并在需要时进行一些专门化。如您所见,调用父级的实现非常简单,但是我看不到一种避免重写默认实现的方法,除非我在实现子接口的类上添加了间

  • 问题内容: 现在我以下: 1)一个Java接口。 2),它的具体的java类 不 执行上述接口,但 不 包含的方法签名的接口中定义的方法中的每一个匹配。 由于我无法更改第2项的实现,因此我想知道是否可以使接受第1项实例作为参数的方法接受没有类强制转换的第2项。 感觉像Spring中的各种编织/强制/ AOP机制应该可以实现这一点,但是我不知道该怎么做。 有没有办法做到这一点? 问题答案: 您可以强

  • 问题内容: 是否可以像用C ++一样用Java 编写 虚拟 方法? 或者,是否存在可以实现类似行为的适当Java方法?我可以举一些例子吗? 问题答案: 来自维基百科 在 Java中 ,默认情况下,所有非静态方法都是“ 虚拟函数”。 只有标记为 final的 方法(不能被覆盖)以及 私有方法 (未被继承)都是 非虚拟的 。

  • 在OOP中,抽象是当我们只向用户提供有用的细节,并隐藏所有实现细节时。那么,如果我有一个接口,并且我在一个类中实现它,那么这是如何实现抽象的呢?我读了这篇关于“如何使用接口实现100%的抽象”的文章 如果这个问题听起来离题或者含糊不清,那么它真的是,我想知道的是oop中的抽象是如何与接口相关的。

  • 问题内容: 据我了解,URL由以下字段组成: 通讯协定(http,https,ftp等) 用户名 用户密码 主机地址(IP地址或DNS FQDN) 端口(可以暗示) 服务器文档根目录中文档的路径 一组参数和值 文件部分(#) 如 我需要一个代码来从任何给定的URL字符串中获取任何这些字段的值(如果未设置,则为null /空值)。我是自己实现还是已经有相应的代码,因此我不需要发明轮子? 我对Scal

  • 问题内容: 我很困惑 我有一个直接实现接口的类: 这证明我在寻找正确的变量: 但是,当我尝试将类的实例强制转换为接口时: 我收到ClassCastException! 另外,返回false,我不确定为什么: 从文档: 确定是否 类或 由这类对象表示接口是 任一相同,或是一个超类或 的超接口,类或接口表示由指定的类的参数。 我不应该总是能够将一个对象强制转换为其类实现的接口吗? 谢谢。 问题答案: