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

在Java中的方法调用接受的实践中传递“ this”

马晓博
2023-03-14
问题内容

在方法调用中传递当前对象是好/坏/可接受的做法。如:

public class Bar{
    public Bar(){}

    public void foo(Baz baz){
        //  modify some values of baz
    }
}

public class Baz{
    //constructor omitted

    public void method(){
        Bar bar = new Bar();
        bar.foo(this);
    }
}

具体来说,该行bar.foo(this)可接受吗?


问题答案:

没有理由不使用它,它this是当前实例,并且使用完全合法。实际上,通常没有清除它的干净方法。

因此使用它。

由于难以令人信服地没有示例是可以接受的(对这个问题的否定答案总是更容易争论),我只是打开了最常见的java.langString之一,当然,例如,我找到了这种用法的实例

1084        // Argument is a String
1085        if (cs.equals(this))
1086            return true;

查找(this在大“接受”的项目,你不会不发现它。



 类似资料:
  • 这可能是在堆栈溢出中问过的最愚蠢的问题,但这很困扰我... 虽然从函数中的int-literal创建普通的短变量并不需要任何显式转换,但是为什么将int-literal传递给短变量(参数传递)需要显式转换呢。。。。。。?? 再一次 我现在不建议在一篇帖子里问两个不相关的问题,但这太琐碎了,不能在另一篇帖子里问。。 **“for”计数器变量的范围** 所以我试着用普通方块 这是否意味着,区块没有自己

  • 那代码在OOP方式下还是好的吗?还是我应该用接口?我认为直接通过方法是可以的。

  • 问题内容: 我在Java中有以下情形。假设我有一个接口,以及两个实现此接口的类。如下: 公共接口myInterface { } 公共类A实现myInterface { } 公共类B实现myInterface { } 如果定义如下,如何调用上面的printOtherStuff方法: 上面的调用代码似乎无效。有任何想法吗? 问题答案: 的参考类型为。这意味着您只能访问接口中定义的方法。您可以将其强制类

  • 我正在ApacheSpark上的数据库中构建一个族谱,使用递归搜索来查找数据库中每个人的最终父级(即族谱顶部的人)。 假设搜索id时返回的第一个人是正确的家长 它给出以下错误 “原因:org.apache.spark.SparkException:RDD转换和操作只能由驱动程序调用,不能在其他转换中调用;例如,

  • 问题内容: 在Java接口中定义类的能力的实际方面是什么: 问题答案: 我可以想到除Eric P链接的用法之外的另一种用法:定义接口的默认/无操作实现。 ./alex 另一个示例- 空对象模式的实现:

  • 我正在使用Saxon(如果需要,我可以使用Xalan)XSLT处理器进行一些转换。我想将下面对象的实例作为参数传递给XSLT模板。 所以我创建了这个对象。 在XSLT文件中,我将参数声明为: 现在我的问题是如何在XSLT内调用该对象的任何实例方法(即.getValue())?有可能吗?我知道我可以调用不同Java类的静态方法,但这并不完全是我想要的。 此外,是否可以在XSLT中填充Java对象,即