O Java suporta estruturas?

Java tem um análogo de um C++ struct:

struct Member {
  string FirstName; 
  string LastName;  
  int BirthYear; 
};
Preciso de usar o meu próprio tipo de dados.

Author: piperchester, 2011-03-02

8 answers

Java definitivamente não tem estruturas:] Mas o que descreve aqui parece um tipo de classe JavaBean.

 36
Author: Heiko Rupp, 2011-03-02 13:34:11

O equivalente em Java a uma estrutura seria

class Member
{
    public String FirstName; 
    public String LastName;  
    public int    BirthYear; 
 };
E não há nada de errado nisso nas circunstâncias certas. O mesmo que em c++ realmente em termos de quando você usa versos do struct quando você usa uma classe com dados encapsulados.
 60
Author: Tom Quarendon, 2011-03-02 13:37:33

Java não tem uma estrutura analógica para C++, mas você pode usar aulas com todos os membros públicos.

 12
Author: Eugene Burtsev, 2014-07-22 05:32:38
Sim, uma aula é o que precisas. Uma classe define um tipo próprio.
 5
Author: Markus, 2011-03-02 13:35:31

As estruturas" realmente " puras não são suportadas em Java. Por exemplo, C# suporta struct definições que representam valores e podem ser atribuídas a qualquer momento.

Em Java, a forma única de obter uma aproximação das estruturas C++

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

// Instantiation

{
    Token t = new Token;
}

Sem usar um buffer estático ou uma lista, está a fazer algo como

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

Então, basta alocar variáveis ou estaticamente defini-las em uma classe.

 2
Author: Hydroper, 2018-04-06 00:13:01

Na verdade uma estrutura em C++ é uma classe (por exemplo, você pode definir métodos lá, ela pode ser estendida, ela funciona exatamente como uma classe), A única diferença é que os modfiers de acesso padrão são definidos para público (para as classes que são definidas para privado por padrão).

Esta é realmente a única diferença em c++, muitas pessoas não sabem disso. ; )

 1
Author: Damian Wojakowski, 2017-12-24 00:41:43

Com a junção do projecto, poderá usar as estruturas em Java, anotando uma classe com a anotação @Struct

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

Mais informações no sítio web do projecto: https://tehleo.github.io/junion/

 1
Author: Leo, 2018-04-25 10:56:31

Eu acho que c # struct é mais interessante quando comparado com a classe Java bean algumas pessoas mencionadas acima. A C# struct tem uma vantagem: não é anulável. Em C#, Int32, Int64 são estruturas, mas eles se comportam como um tipo primitivo, então é muito mais seguro para o boxe/descompressão. Em contraste, Java Integer é uma classe, torna-se realmente estranho quando autoboxing/unboxing uma variável int porque você não vai saber se você seria torrado até que seja tarde demais no tempo de execução.

 0
Author: bkydcmpr, 2018-06-05 13:40:12