Java prend-il en charge les structures?

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

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

J’ai besoin d’utiliser mon propre type de données.

Java n’a définitivement aucune structure 🙂 Mais ce que vous décrivez ici ressemble à un type de classe JavaBean.

L’équivalent en Java pour une structure serait

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

et il n’y a rien de mal à cela dans les bonnes circonstances. Tout comme en C ++, en termes de quand utilisez-vous des couplets lorsque vous utilisez une classe avec des données encapsulées.

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

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

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

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

 struct Token { TokenType type; Ssortingngp ssortingngValue; double mathValue; } // Instantiation { Token t = new Token; } 

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

 var type = /* TokenType */ ; var ssortingngValue = /* Ssortingng */ ; var mathValue = /* double */ ; 

Donc, atsortingbuez simplement des variables ou définissez-les statiquement dans une classe.

Avec Project JUnion, vous pouvez utiliser des structures en Java en annotant une classe avec une annotation @Struct

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

Plus d’infos sur le site du projet: https://tehleo.github.io/junion/

En fait, 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 modfiers d’access par défaut sont définis sur public (pour les classes par défaut).

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

Je pense que C # struct est plus intéressant que la classe Java Bean certaines personnes mentionnées ci-dessus. La structure C # a un avantage: elle n’est pas nullable. En C #, Int32, Int64 sont des structures, mais elles se comportent comme des types primitifs, donc c’est beaucoup plus sûr pour la boxe / unboxing. En revanche, Java Integer est une classe, il devient vraiment gênant lors de l’autoboxing / unboxing d’une variable int parce que vous ne saurez pas si vous serez grillé jusqu’à ce qu’il soit trop tard à l’exécution.