it-swarm.com.de

objekt direkt in Java initialisieren

Ist es möglich, ein Objekt direkt zu initialisieren, wie dies mit der String-Klasse in Java möglich ist:

sowie: 

String str="something...";

Ich möchte dasselbe für meine benutzerdefinierte Klasse tun: 

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

ist das möglich 

MyClass obj1={"name",24};

oder 

MyClass obj1="name",24;

objekt initialisieren? oder wie es möglich sein kann!

25
satvinder singh

Normalerweise würden Sie einen Konstruktor verwenden, müssen aber nicht!

Hier ist die Version des Konstruktors:

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
}

was ist wie folgt verwendet:

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


Wenn Ihre Felder jedoch protected oder public sind, wie in Ihrem Beispiel, können Sie dies tun, ohne - einen Konstruktor zu definieren. Dies ist der nächstgelegene Weg in Java zu dem, was Sie möchten:

// 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!

39
Bohemian

Ich weiß das mit Konstruktoren, aber es gibt einen alternativen Weg oder nicht?

Nein, es gibt keine Alternativen zu Konstruktoren.

Das ist im Grunde eine der grundlegenden Garantien der Sprache. Ein Objekt kann nicht auf andere Weise als durch seine Konstruktoren erstellt werden, und es gibt keine alternative Syntax als die übliche new ConstructorName(...).

Die nächste Idee, die ich mir vorstellen kann, wäre eine statische Factory-Methode namens say, mc:

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

und dann tun

import static some.pkg.MyClass.mc;

...

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

Wenn Sie eine Klasse Person haben:

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;
    }

}

Sie können tatsächlich ein neues Person-Objekt erstellen und seinen Vornamen und Nachnamen folgendermaßen initialisieren:

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

Dies wird häufig verwendet, wenn Sie die Spring-Konfiguration mithilfe von Java-Code anstelle der XML-Konfiguration definieren.

4
Feng

Sie müssen eine Konstruktormethode für das Objekt erstellen, die die Parameter der Felder übernimmt, für die Sie Werte festlegen möchten.

Beispiel:

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

Dann wollen Sie in der Klasse Folgendes:

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

Es gibt zwei Arten von Konstruktoren in Java. 

  1. Standardkonstruktor 
  2. Parametrisierter Konstruktor

Sie sollten einen parametrisierten Konstruktor erstellen, um Ihr Objekt zu erstellen. 

0
class MyData{

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

Dann können Sie Ihre Klasse auf folgende Weise instanziieren:

MyData myData = new MyData("name", 24);
0
M. Abbas
    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);
    }

}

// Objekt initializatian durch Construtor 

k = 45m = 65

objektinitialisierung über Methode

k = 34m = 56

objektinitialisierung über Referenz

a = 12  b =24
0
charu

Mit dem Schlüsselwort new und using-Konstruktoren ist es möglich, aber nicht wie bei String, das ist eine sehr spezielle Art von Objekt.

0
Oscar Gomez