在java中获取私有类的对象

在java中获取私有类的对象,java,Java,我不太精通java,有一个小问题 我经常看到以下代码: public class A { private class B { B() { } get() { return this; } } public B getB() { return new B().get(); } } 我的问题是,如果getB()只返回new B()而不是new B,有什么区别呢 当您返回B().g

我不太精通java,有一个小问题

我经常看到以下代码:

public class A
{
   private class B {

       B() {
       }

       get() {
       return this;
       }
   }

   public B getB() {
      return new B().get();
   }    
}
我的问题是,如果getB()只返回new B()而不是new B,有什么区别呢
当您返回B().get()时,这仅仅是一个好的软件工程,还是有更深层次的推理?

返回此返回
B
的当前实例。在你的例子中,
newb().get()
返回
B
的新实例(立即创建)

所以
返回新的B().get()
new B()
执行相同和等效的操作

我们可以在单例模式中使用
get()
方法,或者说
getInstance()
方法,比如:

public class B {

 private static B instance = null; 

  public static B getInstance(){
   if(instance == null){
       instance = new B();
    }

    return instance;
  }    
} 

因此,无论我们调用多少次
getInstance()
,它都会返回同一个实例,
返回这个
会返回
B
的当前实例。在你的例子中,
newb().get()
返回
B
的新实例(立即创建)

所以
返回新的B().get()
new B()
执行相同和等效的操作

我们可以在单例模式中使用
get()
方法,或者说
getInstance()
方法,比如:

public class B {

 private static B instance = null; 

  public static B getInstance(){
   if(instance == null){
       instance = new B();
    }

    return instance;
  }    
} 

因此,无论我们调用多少次
getInstance()
,它都返回相同的实例基本上返回“this”的方法是无用的-应该调用此方法的代码已经引用了返回“this”的对象基本上是方法是无用的-应该调用此方法的代码已经引用了对象

没有区别。因为当您创建一个
new B()
JVM将为对象分配一个新地址(例如:100001F),当您调用
new B().get()
时,它将返回相同的地址(100001F)。如果您只返回
new B()
,它将返回相同的地址(100001F)


我的特别意见是:
returnnewb()
是最好的选择,因为它分配对象并返回地址,而不是分配和以后的invoque
get()
方法。

没有区别。因为当您创建一个
new B()
JVM将为对象分配一个新地址(例如:100001F),当您调用
new B().get()
时,它将返回相同的地址(100001F)。如果您只返回
new B()
,它将返回相同的地址(100001F)


我的特别意见是:
returnnewb()
是最好的选择,因为它分配对象并返回地址,而不是分配和以后的invoque
get()
方法。

不要忘记返回类型。还有方法链接。在您当前的代码中,它什么也不做<代码>返回新的B()
是等效的。在某些情况下,这可能用于确保B是不可变的。但是,如果get()在
之前执行了
操作,那么返回这个,我想你可以看到它会有什么不同。别忘了返回类型。还有方法链接。在您当前的代码中,它什么也不做<代码>返回新的B()
是等效的。在某些情况下,这可能用于确保B是不可变的。但是,如果get()在
之前执行了
操作,那么返回这个
,我想你可以看到它会有什么不同。这很简单,不是真的,它对fluent api非常有用。无法再编辑注释,因此:例如:
return new Object().addSubObject(sub1)。addReference(ref1)。setSomeOptionalThing(thing)。CalculateMething()
Bas,您的代码示例是正确的,但与问题不同。在你的例子中,这个方法执行一些操作,然后返回引用,但是他的例子定义了一个只返回引用的方法。我知道,我只是回应你的语句“基本上,返回“this”的方法是无用的”好吧,也许听起来太泛型了,但实际上我指的是那些只返回“this”的方法,这很简单,不是真的,它对fluent api非常有用。无法再编辑注释,因此:例如:
return new Object().addSubObject(sub1).addref1.setSomeOptionalThing(thing).calculateMething()
Bas,您的代码示例是正确的,但与问题不同。在你的例子中,这个方法执行一些操作,然后返回引用,但是他的例子定义了一个只返回引用的方法。我知道,我只是响应你的语句“基本上,返回“this”的方法是无用的”,好吧,也许听起来太泛型了,但实际上我指的是那些只返回“this”的方法