您可以使用无类型对象实例化Java类构造函数吗?

Sorakthun Ly:

我来自Java语言背景。我了解在Java中,要实例化一个类,可以提供多个构造函数来设置类变量。但是,可以为构造函数提供一个无类型的对象来初始化类变量,如下所示:

public class Book {
    String title;
    String author;

    public Book(Object data) {
        this.title = data.title;
        this.author = data.author;
    }
}

所以我可以实例化一个新的Book实例,例如:

Book bookOne = new Book({ title: "Book One", author: "Author One" });

我之所以想这样做,是因为如果一个类在初始化时要说10个以上的变量,那么通过给出一个例如10​​个参数的列表很难可靠地实例化一个类。

大卫:

您可以通过依赖JSON API并指定a String而不是Objectas参数来实现。
但这不是类型安全的,它是Java中强类型的反模式。
请注意,当您在JavaScript前端和Java后端之间进行通信时,当然可以接受Java中的JSON。但通常我们不直接操作JSON。在特定类的实例中反序列化该字段,该字段表示JSON传输的信息。

之所以要这样做,是因为如果一个类在初始化时要说的变量超过10个,则很难通过给出一个例如10​​个参数的列表来可靠地实例化一个类。

具有10个参数的类构造函数也不是一个好的模式。
在某些情况下,为一个实例设置10个字段可能是可以接受的:尤其是因为该类仅表示一个数据结构。
在这种情况下,设置对象字段的最佳方法是使用设置器或构建器。

1)二传手方式

Book b = new Book();
b.setTitle(...);
b.setAuthor(...);

2)建设者的方式

Book b = new Book.BookBuilder()
                 .withTitle(...)
                 .withAuthor(...)
                 .build();

但是,实际上应避免由于可能放置错误的参数类型以及构造调用的可读性而容易出错的构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用类对象实例化一个类吗?构造函数呢?

您可以使用特定的类型化类来继承泛型类吗?

您可以使用字符串实例化类吗?

您可以在类中创建帮助程序函数而无需实例化该类的对象吗?

我可以使用在类构造函数中初始化的ofstream类型的成员变量吗?

您可以为类使用类似数组的构造函数吗

我可以使用类型作为值(或从构造函数参数正确推断通用类类型)吗?

可以使用C ++聚合初始化来构造实现接口的类的实例吗?

类型构造函数可以使用与类型相同的别名吗?

您可以使用ABCL编写Java类吗?

如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

您可以调用基类的构造函数来创建派生对象吗?

您可以在类和构造函数中进行初始化,这是正确的吗?

在类型上找不到匹配的构造函数。您可以使用Arguments或FactoryMethod指令来构造类型

从类构造函数实例化对象的集合

我可以在Java的构造函数的帮助下从相同的类数据构造不止一种类型的对象吗?

您可以从类的共享函数中获取/更改对象的所有实例的数据吗?

您可以检查未实例化JS对象的字段名称和类型吗?

在Java中是否可以使用反射创建没有no-arg构造函数的类的“空白”实例?

您可以使用超类的对象访问子类变量吗?

JsonMappingException:找不到适合类型[简单类型,类]的构造函数:无法从JSON对象实例化

Android:无法实例化类:无空构造函数

我可以使用 willSet 来构造类实例字典条目吗?

我可以在Java的公共类中从参数化构造函数调用默认构造函数吗?

您可以使用 PSCredential 对象运行 quser 吗?

您可以在Kotlin中使用通用的主要构造函数吗?

您可以使用闭包优化函数的导入吗?

您可以使用 ArrayFormula 复制 IMPORTXML 函数吗?

可以使用函数类型强制执行“无未知属性”吗?