gpt4 book ai didi

java - 将句柄传递给 java 中的子类时,我应该使用声明还是 this() ?

转载 作者:行者123 更新时间:2023-12-02 00:29:55 24 4
gpt4 key购买 nike

如果我有一个类创建一个新对象并将 this() 的引用传递给该新对象,我应该只使用 this() 还是应该为该类创建一个声明并传递该声明。我似乎无法找到一个明确的例子来说明在将句柄传递给子对象时何时使用每种情况。

public class ThisClass {

ThisClass decHandle;
ThisClass someThing = this;
public String decString = "some string";
SomeOtherClass classObject1 = new SomeOtherClass(this);
SomeOtherClass classObject2 = new SomeOtherClass(decHandle);
SomeOtherClass classObject3 = new SomeOtherClass(someThing);

}

public class SomeOtherClass {

ThisClass decHandle;
public SomeOtherClass (ThisClass handle){
decHandle = handle;
}
String valueForOther = decHandle.someThing;

}

我主要需要知道将句柄从父类传递给子类时哪种是最佳实践。

最佳答案

这里有不少错误。

1) SomeOtherClass 中的最后一条语句应该是

String valueForOther = decHandle.decString;

而不是

String valueForOther = decHandle.someThing;

2)当你说

SomeOtherClass classObject1 = new SomeOtherClass(this);

它将抛出 NullPointerException,因为您尚未构造该对象。 “this”指的是当前对象。在您的代码中,没有对象,因此该行将引发异常。这同样适用于下一行。

3) “子”表示该类继承自父类。仅仅因为 SomeOtherClass 引用了 ThisClass,并不意味着 SomeOtherClass 是子级。

4) 让类(class)成员具有公众可见性并不是一个好的做法。

好的,这就是你应该如何做的。

public class ThisClass 
{
private String decString = "some string";
private SomeOtherClass someOtherClass;

public ThisClass()
{
someOtherClass = new SomeOtherClass(this);
}

public String getDecString()
{
return decString;
}
}

public class SomeOtherClass
{

private ThisClass decHandle;
private String valueForOther;

public SomeOtherClass (ThisClass handle)
{
decHandle = handle;
valueForOther = decHandle.getDecString();
}
}

关于java - 将句柄传递给 java 中的子类时,我应该使用声明还是 this() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com