it-swarm.com.de

Unterstützt Java Strukturen?

Verfügt Java über ein Analogon einer C++ struct:

struct Member {
  string FirstName; 
  string LastName;  
  int BirthYear; 
};

Ich muss meinen eigenen Datentyp verwenden.

60
Dmitry

Java hat definitiv keine Strukturen:) Aber was Sie hier beschreiben, sieht aus wie eine JavaBean-Klasse.

38
Heiko Rupp

Das Äquivalent in Java wäre eine Struktur

class Member
{
    public String FirstName; 
    public String LastName;  
    public int    BirthYear; 
 };

und es ist nichts falsch daran unter den richtigen Umständen. Ähnlich wie in C++ in Bezug auf den Zeitpunkt, wann Sie Strukturverse verwenden, wenn Sie eine Klasse mit gekapselten Daten verwenden.

75
Tom Quarendon

Java hat kein Analogon zu C++ - Strukturen, aber Sie können Klassen mit allen öffentlichen Mitgliedern verwenden.

14
Eugene Burtsev

Eigentlich ist eine Struktur in C++ eine Klasse (z. B. können Sie dort Methoden definieren, sie kann erweitert werden, sie funktioniert genau wie eine Klasse). Der einzige Unterschied besteht darin, dass die standardmäßigen Zugriffsmodfiers auf public (für Klassen auf private) gesetzt sind standardmäßig).

Das ist wirklich der einzige Unterschied in C++, viele Leute wissen das nicht. ; )

6

Ja, eine Klasse ist das, was Sie brauchen. Eine Klasse definiert einen eigenen Typ.

6
Markus

Strukturen "wirklich" werden in Java nicht unterstützt. Zum Beispiel unterstützt C # struct Definitionen, die Werte darstellen und jederzeit zugewiesen werden können.

In Java die einzigartige Möglichkeit, eine Annäherung an C++ - Strukturen zu erhalten

struct Token
{
    TokenType type;
    Stringp stringValue;
    double mathValue;
}

// Instantiation

{
    Token t = new Token;
}

ohne einen (statischen Puffer oder eine Liste) zu benutzen, tut so etwas

var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;

Ordnen Sie also einfach Variablen zu oder definieren Sie sie statisch in eine Klasse.

2
Diva

Mit Project JUnion können Sie Strukturen in Java verwenden, indem Sie eine Klasse mit @Struct-Annotation versehen

@Struct
class Member {
  string FirstName; 
  string LastName;  
  int BirthYear; 
}

Weitere Informationen auf der Website des Projekts: https://tehleo.github.io/junion/

1
Leo

Ja, Java hat noch keinen Struktur-/Werttyp. In der kommenden Java-Version werden wir jedoch inline class erhalten, das der Struktur in C # ähnelt und uns dabei hilft, zuweisungsfreien Code zu schreiben.


inline class point { 
  int x;
  int y;
}

0