java - 如何在工厂模式中使用匿名对象?

标签 java factory-pattern anonymous-types

我有一个方法:

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/

相关文章:

java - 工具栏覆盖状态栏

java - JFrame组件: "Drag-Bar"?

java - 关于事务和事件监听器

java - 如何检查相机自动对焦何时完成android?

javascript - 命名匿名函数

php - PHP 中基于字符串的工厂模式 (OOP)

javascript - vuejs - 如何将 Prop 和事件动态传递给动态组件

java - C# 中的参数化 System.Type 变量

java - 如何在java中访问匿名外部类的 "this"引用

c# - 签名中的匿名类型