动态创建自定义对象

时间:2014-08-05 19:04:22

标签: java object

我想知道是否有一种方法可以动态创建对象,或者我应该说不使用Class对象及其属性。我正常做的就是这个。

ApiHelper apiHelper = new ApiHelper();
User user = new User();
user.Firstname = "FirstName";
apiHelper.send("", user);

我想在我的代码片段中完成此操作:

ApiHelper apiHelper = new ApiHelper();
apiHelper.send("", new { Firstname = "Firstname"});

send()的第二个参数的数据类型为Object,此Object稍后转换为json字符串。

这是一个c#示例,在java中是否有这个对应的?我有点认为,如果我在创建对象时使用第一种方法,我需要很多类才能符合我需要构建的对象,所以我希望如果我可以使用第二种方法在java中完成它。

3 个答案:

答案 0 :(得分:4)

从技术上讲,这可能与Java有关。语法是这样的:

apiHelper.send("", new Object(){ String firstName = "Firstname"});

然而,这通常是无用的。你更有可能想要做的是创建一个接口/类来定义你想要的方法和字段,并传递一个实例。

示例:

class Data{
    String firstname;
    public Data(String firstname){
        this.firstname=firstname;
    }
}

答案 1 :(得分:2)

嗯,你真正需要的是一个以Firstname作为参数的构造函数。

public User(String fName) {
    Firstname = fName;
}

虽然,你的成员大写不是Java中的惯例,因为它在C#中;应该是

String firstname;

然后你会做......

apiHelper.send("", new User("Firstname"));

答案 2 :(得分:0)

如果你不能修改User来添加一个构造函数,那么我将使用"双括号初始化,"您基本上可以在实例化该类的类中运行代码:

ApiHelper apiHelper = new ApiHelper();
apiHelper.send("", new User(){{
        Firstname = "Firstname";
    }});

然后在实例化后立即执行行Firstname = "Firstname";