我想创建一个非静态类,可以让它的实例由它创建的实例访问,例如:
public class Foo {
private String name;
public Foo(String name) {
Bar bar = new Bar();
bar.getFooName();
this.name = name;
)
public String getName() {
return name;
}
}
public class Bar {
String getFooName() {
return Foo.toString(); //How do I get the Foo that created it?
}
}
public class Main {
public static void main(String[] args) {
new Foo("Steve");
new Foo("Bob");
}
}
如果我将Foo.name设为静态,则所有实例都具有相同的名称.我可以在创建Bar时将Foo的实例作为变量传递,但是这会变得混乱,假设bar创建了更多的对象,它们也想要访问Foo.它有一些方法允许Bar及其创建的所有对象访问创建它们的Foo实例吗?
编辑:这是一个非静态主类,它创建许多不同类的实例.当可能存在多个主类实例时,每个实例都需要能够找到创建它的主实例创建的其他实例
解决方法:
您可以将Foo引用传递给Bar构造函数:
public class Foo
{
String name;
public Foo(String name) {
this.name = name;
Bar bar = new Bar(this);
}
public String getName () {
return this.name;
}
}
public class Bar
{
Foo creator;
public Bar (Foo creator) {
this.creator = creator;
}
String getFooName() {
return creator.getName();
}
}
虽然,我不确定在Foo构造函数中创建Bar实例而不保留对它的引用是什么意思.
另一个选择是使Bar成为Foo的内部类:
public class Foo
{
String name;
public Foo(String name) {
this.name = name;
Bar bar = new Bar();
}
public String getName () {
return this.name;
}
public class Bar
{
public Bar () {
}
String getFooName() {
return getName();
}
}
}
这样,每个Bar实例都将与一个封闭的Foo实例相关联.
标签:java
来源: https://codeday.me/bug/20190705/1387347.html