Подтвердить что ты не робот

Инициализировать объект непосредственно в java

Возможно ли инициализировать объект напрямую, как мы можем сделать с классом String в java:

например:

String str="something...";

Я хочу сделать то же самое для своего пользовательского класса:

class MyData{
public String name;
public int age;
}

возможно, как

MyClass obj1={"name",24};

или

MyClass obj1="name",24;

для инициализации объекта? или как это возможно!

4b9b3361

Ответ 1

Обычно вы должны использовать конструктор, но вам не нужно!

Здесь версия конструктора:

public class MyData {
    private String name;
    private int age;

    public MyData(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter/setter methods for your fields
}

который используется следующим образом:

MyData myData = new MyData("foo", 10);


Однако, если ваши поля protected или public, как в вашем примере, вы можете сделать это без определения конструктора. Это самый близкий путь в java к тому, что вы хотите:

// Adding special code for pedants showing the class without a constuctor
public class MyData {
    public String name;
    public int age;
}

// this is an "anonymous class"
MyData myData = new MyData() {
    {
        // this is an "initializer block", which executes on construction
        name = "foo";
        age = 10;
    }
};

Voila!

Ответ 2

Я знаю, что с конструкторами, но любой альтернативный способ присутствует или нет?

Нет, альтернативы конструкторам не существует.

Это в основном одна из основных гарантий языка. Объект не может быть сконструирован никакими другими средствами, кроме его конструкторов, и нет альтернативного синтаксиса, чем обычный new ConstructorName(...).

Ближайшей идеей, которую я могу придумать, было бы иметь статический метод factory, называемый say, mc:

class MyClass {
    ...
    public static mc(String name, int age) {
        return new MyClass(name, age);
    }
}

а затем do

import static some.pkg.MyClass.mc;

...

MyClass obj1 = mc("name",24);

Ответ 3

Если у вас есть класс Person:

public class Person {

    private String lastName;
    private String firstName;

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

}

Фактически вы можете создать новый объект Person и инициализировать его имя firstName и lastName со следующим:

 Person person = new Person(){{
     setFirstName("My FirstName");
     setLastName("MyLastName");
 }}

Это используется довольно часто при определении конфигурации Spring с использованием кода Java вместо конфигурации XML.

Ответ 4

Вы должны создать метод конструктора для объекта, который принимает параметры полей, для которых вы хотите значения.

Пример:

public myClass( int age, String name)
{
   this.age = age;
   this.name = name;
}

Затем в классе вы хотите это:

myClass class = new myClass(24, "name");

Ответ 5

Это возможно с ключевым словом new и использованием конструкторов, но не как String, это особый вид объекта.

Ответ 6

class MyData{

    public MyData(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String name;
    public int age;
    }

Затем вы можете создать экземпляр класса следующим образом:

MyData myData = new MyData("name", 24);

Ответ 7

    package com.company;

public class InitializationOfObject {
    int a ;
    int b ;

    InitializationOfObject(){
    }

    InitializationOfObject( int r , int n){
        this.a = r;
        this.b = n;
        System.out.println("Object initialization by constructor  ");
    }

    void methodInitialization(int k, int m){
        System.out.println("object initialization via method");
        this.a = k;
        this.b = m;
    }

    void display(){
        System.out.println("k = " +a+ "m = "+b);
    }

    public static void main(String... arg){
        InitializationOfObject io = new InitializationOfObject();
        InitializationOfObject io2 = new InitializationOfObject(45,65);
        io.a = io2.a;
        io.b = io2.b;
        io.display();

        io.methodInitialization(34,56);
        io.display();

        io.a = 12;
        io.b = 24;
        System.out.println("object initialization via refrence");
        System.out.println("a = "+io.a+" "+ " b ="+io.b);
    }

}

//Инициализация объекта конструктором

k = 45m = 65

инициализация объекта с помощью метода

k = 34m = 56

инициализация объекта через ссылку

a = 12  b =24

Ответ 8

Нет альтернативы конструкторам (вместе с новым оператором) в java во время инициализации объекта. Вы упомянули как

Строка str = "something"

вы можете инициализировать строку таким образом, потому что String является литералом в java. Только литералы могут быть инициализированы таким образом. Компонный объект не может инициализироваться, но может быть создан только с новым оператором с конструкторами.