我有一个方法:
public class FooFactory {
public Foo createNewFoo(){
return new foo();
}
}
现在如果我这样做:
FooFactory fooFactory = new FooFactory();
Foo foo = FooFactory.createNewFoo();
它会很好地工作。但是,如果我尝试这样做:
new Foo() = FooFactory.createNewFoo();
它似乎根本不起作用。它说“预期变量”。
我明白 new Foo()
本身,创建一个新的 Foo 对象,但即使我使用工厂,它也应该用新的 Foo
覆盖匿名对象。对象。
我也试过创建一个 ArrayList
持有 Foo 并正在做
arrayList.add(new Foo());
arrayList.get(0) = FooFactory.createNewFoo();
它仍然说“预期变量”。为什么这么说?
Foo foo = new Foo();
Foo otherFoo = foo;
这工作得很好,所以我不明白为什么我不能让工厂使用匿名对象。
我试着在网上搜索这个,但我没有得到任何搜索结果,这告诉我我可能犯了一些荒谬的错误/错误地使用了工厂模式。
最佳答案
Equals 是一个赋值 operator .
targetOfMyAssignment = thingImAssigning;
new Foo()
是创建对象的语句。 它是生产者。你不能给它赋值,它不是变量引用。变量引用,如 Foo foo =
,是消费者。 arraylist.get(0)
也是一个生产者。该语句就像构造函数一样,提供 一个值,但它不是供您赋值的引用。 arraylist.add(object)
也是一个消费者。
我想你也误解了 anonymous type 是什么是;匿名类型是您通过在类声明后使用 {}
指定新行为来内嵌覆盖其部分或全部行为的类型。例如:
Runnable r = new Runnable() {
public void run() {
// code
}
};
你需要一个匿名类型,因为 Runnable
是一个接口(interface),没有为 run()
定义行为,所以 Runnable r = new Runnable();
不会编译。
关于java - 如何在工厂模式中使用匿名对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884015/