Java a-t-il un analogue d'un C ++ struct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
J'ai besoin d'utiliser mon propre type de données.
java
data-structures
Dmitry
la source
la source
firstName
,lastName
etbirthYear
(ouyearOfBirth
bien sûr).Réponses:
Java n'a définitivement pas de structure :) Mais ce que vous décrivez ici ressemble à une classe de type JavaBean.
la source
inline class
à un moment donné dans un proche avenir, ce qui, je crois, ressemble plus à une structure.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. À peu près la même chose qu'en C ++ en termes de quand utilisez-vous des versets de struct quand utilisez-vous une classe avec des données encapsulées.
la source
En fait, une structure en C ++ est une classe (par exemple, vous pouvez y définir des méthodes, elle peut être étendue, cela 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 private par défaut).
C'est vraiment la seule différence en C ++, beaucoup de gens ne le savent pas. ; )
la source
Java n'a pas d'analogue aux structures de C ++, mais vous pouvez utiliser des classes avec tous les membres publics.
la source
struct
en C ++ est (à peu près ) la même chose qu'unclass
en C ++.public
, pourquoi ne pas les garder au moins à l'intérieur du package? De telles classes ne sont généralement pas adaptées à une utilisation dans une API (ne serait-ce que pour lesnull
références possibles ). Utilisez toujours la visibilité minimale!Avec Project JUnion, vous pouvez utiliser des 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/
la source
Oui, une classe est ce dont vous avez besoin. Une classe définit un propre type.
la source
Oui, Java n'a pas encore de type struct / value. Mais, dans la prochaine version de Java, nous allons obtenir
inline class
ce qui est similaire à struct en C # et nous aidera à écrire du code sans allocation.inline class point { int x; int y; }
la source
Les structures "vraiment" pures ne sont pas supportées en Java. Par exemple, C # prend en charge les
struct
définitions 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; Stringp stringValue; double mathValue; } // Instantiation { Token t = new Token; }
sans utiliser de (tampon statique ou liste) fait quelque chose comme
var type = /* TokenType */ ; var stringValue = /* String */ ; var mathValue = /* double */ ;
Alors, allouez simplement des variables ou définissez-les statiquement dans une classe.
la source
Avec Java 14, il prend en charge Record. Vous voudrez peut-être vérifier que https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/Record.html
Et il y a des classes scellées après Java 15. https://openjdk.java.net/jeps/360
la source