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

覆盖实例化Java对象中的方法

邵宏达
2023-03-14
问题内容

我想覆盖我无法控制的工厂提供给我的对象中的方法。

我的具体问题是,我想覆盖 的getInputStreamgetOutputStream方法 一的 Socket对象 进行
线记录

通用问题如下:

public class Foo {
    public Bar doBar() {
        // Some activity
    }
}

我想实例化FoodoBar用我自己的实例替换的位置,如下所示:

Bar doBar() {
    // My own activity
    return original.doBar();
}

对于套接字,我将返回一个 InputStreamOutputStream ,它们通过记录来包装以拦截数据


问题答案:

由于Java使用基于类的OO,所以这是不可能的。您可以做的是使用装饰器模式,即为返回包装流的对象编写包装器。



 类似资料:
  • 本文向大家介绍Java中覆盖finalize()方法实例代码,包括了Java中覆盖finalize()方法实例代码的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是Java中关于覆盖finalize()方法的一次尝试,具体实现如下。 测试代码 执行结果: finalize methode executed yes,i am still alive Exception in thread "

  • 问题内容: 堆垛机。我一直在网站上搜索我的问题,但没有找到我想要的东西。我坚持下面的代码: 得到了一个不错的数组列表,但是如果我在ArrayList中添加更多“ newUsers”,它们似乎会相互覆盖。我不想创建一个newUser1,newUser2对象,因为稍后在我的程序中,我必须能够直接从该程序添加新用户。 如何实现呢? ValidateUser: } 问题答案: 如果我理解正确,那么您是以这

  • 问题内容: 我希望有人能够回答这个对Python有深刻理解的问题 考虑以下代码: 注意)如何不会产生的预期结果?我想知道为什么会这样,是否有办法实现这一目标… 相比之下,下面的示例仍然有效(也许是因为我们不打算重写特殊方法吗?): 问题答案: 不会调用特殊方法,那些__在实例上带有名称包围的特殊方法,而仅在类上,显然可以提高性能。因此,无法直接在实例上进行覆盖并使其起作用。相反,你需要执行以下操作

  • 问题内容: 我是Java新手。在编码Map <>时,我发现OK 声明是语法错误。在Java中,是否有可能实例化对象类型的泛型而不是基元?如果是这样,是否对基元进行装箱/拆箱会明显降低性能? 问题答案: 是的,您只能将引用类型用于泛型类型参数,是的,由于装箱/拆箱(在大多数情况下可以自动完成),因此会降低性能。 这是Java泛型常见问题解答的引文: 是否可以将原始类型用作类型参数? 不能。只能将引用

  • 问题内容: 这个想法有些含糊不清,我需要澄清。 我的问题是使用此代码时: 输出为。 这是因为main函数与method在同一类中,还是由于重写? 我已经在书中读过这个想法,当我将该函数放在另一个类中时,会出现编译器错误。 问题答案: 您不能覆盖方法。如果投射到,则看不到。您 可以 覆盖一个方法,但这不是您要在此处执行的操作(是的,在这里,如果将移至,则会得到另一个方法。我建议您在打算覆盖时注解,

  • 问题内容: 在Java中重写私有方法是无效的,因为父类的私有方法是“自动最终的,并且对派生类是隐藏的”。我的问题主要是学术上的。 不允许父级的私有方法被“重写”(即,在子类中以相同的签名独立实现),这是否违反封装规范?根据封装的原理,子类不能访问或继承父级的私有方法。它是隐藏的。 那么,为什么应该限制子类实现自己的具有相同名称/签名的方法呢?这是否有一个良好的理论基础,还是仅仅是某种务实的解决方案