web-dev-qa-db-fra.com

Est-ce que Java supporte les structs?

Est-ce que Java a un analogue d'un C++ struct:

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

Je dois utiliser mon propre type de données.

60
Dmitry

Java n'a définitivement pas de structure:) Mais ce que vous décrivez ici ressemble à un type de classe JavaBean.

38
Heiko Rupp

L'équivalent en Java d'une structure serait

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

et il n'y a rien de mal à cela dans les bonnes circonstances. C'est un peu la même chose qu'en C++ en ce qui concerne le moment où vous utilisez une struct verse quand vous utilisez une classe avec des données encapsulées.

75
Tom Quarendon

Java n'a pas d'analogue aux structures de C++, mais vous pouvez utiliser des classes avec tous les membres publics.

14
Eugene Burtsev

En réalité, une structure en C++ est une classe (par exemple, vous pouvez y définir des méthodes, elle peut être étendue, elle fonctionne exactement comme une classe), la seule différence est que les modfieurs d'accès par défaut sont définis sur public (pour les classes, ils sont définis sur privée) par défaut).

C’est vraiment la seule différence en C++, beaucoup de gens ne le savent pas. ; )

6
Damian Wojakowski

Oui, un cours est ce dont vous avez besoin. Une classe définit son propre type.

6
Markus

Les structures "vraiment" pures ne sont pas supportées en Java. Par exemple, C # prend en charge les définitions struct qui représentent des valeurs et peuvent être attribuées à tout moment.

En Java, le moyen unique d'obtenir une approximation des structures C++

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

// Instantiation

{
    Token t = new Token;
}

sans utiliser (tampon statique ou liste) fait quelque chose comme

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

Il suffit donc d’allouer des variables ou de les définir de manière statique dans une classe.

2
Diva

Avec le projet JUnion, vous pouvez utiliser les structures en Java en annotant une classe avec l'annotation @Struct.

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

Plus d'informations sur le site web du projet: https://tehleo.github.io/junion/

1
Leo

Oui, Java n'a pas encore de type struct/value. Mais, dans la prochaine version de Java, nous allons obtenir inline class, qui est similaire à struct en C # et nous aidera à écrire du code sans allocation.


inline class point { 
  int x;
  int y;
}

0
ganesan arunachalam