Java中是否提供C#样式对象初始值设定项 [英] Are C# style object initializers available in Java

查看:111
本文介绍了Java中是否提供C#样式对象初始值设定项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

喜欢这个吗? http://weblogs.asp.net/ dwahlin / archive / 2007/09/09 / c-3-0-features-object-initializers.aspx

Person p = new Person()
{
    FirstName = "John",
    LastName = "Doe",
    Address = new Address()
    {
        Street = "1234 St.",
        City = "Phoenix"
    }
};


推荐答案

实际上,有!

Person p = new Person()
{{
    setFirstName("John");
    setLastName("Doe");
    setAddress(new Address()
    {{
        setStreet("1234 St.");
        setCity("Phoenix");
    }});
}};

甚至:

Person p = new Person()
{{
    firstName = "John";
    lastName = "Doe";
    address = new Address()
    {{
        street = "1234 St.";
        city = "Phoenix";
    }});
}};

这称为双括号初始化。但是,我会避免这种习惯用法,因为它有一些意想不到的副作用,例如:这个语法实际上创建了一个匿名内部类 Person $ 1 Address $

This is called double brace initialization. However I would avoid this idiom as it has some unexpected side-effects, e.g. this syntax actually creates an anonymous inner class Person$1 and Address$.

  • What is Double Brace initialization in Java?
  • Double Brace Initialization

这篇关于Java中是否提供C#样式对象初始值设定项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆