首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数传递给构造函数,替代语法

将参数传递给构造函数,替代语法
EN

Stack Overflow用户
提问于 2012-09-08 12:00:14
回答 3查看 314关注 0票数 1

在学习Java的基础知识时,我记得遇到了将参数传递给类构造函数的特定语法。我发现这个语法是额外可读的,但遗憾的是我再也找不到它了。它看起来有点像以下几个方面:

代码语言:javascript
运行
复制
// Creating an instance of the Employee class (has property name, salary, etc)
Employee fred = new Employee({
    name: "Fred",
    salary: 5000
    job: Jobs.PROGRAMMER
});

正如您可能看到的,构造函数的每个参数意味着什么,这就非常清楚了,这就不需要查看文档了--只是为了理解简单的代码。

,我是混合了语言,还是存在类似于的语法?如能最终链接到手册,将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-08 12:13:08

这不是Java语法(从来都不是)。

您可以做的是实现类似的功能,将匿名类与初始化器一起使用,如

代码语言:javascript
运行
复制
class Employee{
    String first;
    String last;
}

Employee mike = new Employee(){{
    first = "Mike";
    last  = "Meyers";
}};

这里所发生的事情有一个解释:http://blog.schauderhaft.de/2012/08/19/named-parameters-in-java-another-alternative/

票数 2
EN

Stack Overflow用户

发布于 2012-09-08 12:07:42

您可能会想到类似于以下代码的内容:

代码语言:javascript
运行
复制
SomeClass foo = new SomeClass(/* args */) {
  {
    protectedOrPublicField = someValue;
    protectedOrPublicMethod(/*args*/);
  }
}

这将构造一个对象并同时调用方法。它被称为双支撑初始化。这并不完全是您所要求的,但它是我在Java中所知道的最熟悉的语法。

请注意,您可以使用它来设置受保护或公共字段的值。这看起来与您的示例非常相似。

如果希望您的构造函数更具可读性,可以考虑使用自描述的静态工厂法建造者模式。有关更多细节,请参阅约书亚·布洛赫出色的有效Java第二版,或者咨询你最喜欢的搜索引擎。

票数 2
EN

Stack Overflow用户

发布于 2012-09-08 12:18:25

是的,你混合了C# 命名和可选参数的一个新特性。然而,如果你创建类似@Duncan所说的东西,那是完全相同的匿名类。然而,根据Java规范15.9.1的说法

代码语言:javascript
运行
复制
An anonymous class cannot have an explicitly declared constructor.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12330554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档