Structure-achtige gegevensstructuur maken in Java

Ik ben nieuw bij Java en ik probeer een manier te vinden om informatie op te slaan zoals een struct in C., bijvoorbeeld, bijvoorbeeld ik wil een programma-huurmedewerkers hebben. Het zou van de gebruiker een voornaam, achternaam en ID-nummer nemen en zou het opslaan. De gebruiker kan deze informatie dan van een voorwaarde op basis van een voorwaarde bekijken (als de database bijvoorbeeld meer dan 1 werknemer had). Kan elke manier de beste manier voorstellen om dit te doen?


Antwoord 1, Autoriteit 100%

Een struct in C, net als een klasse in Java en veel krachtiger, omdat klasse in Java methode kan bevatten en C++ doet. Je maakt een nieuwe klasse. Bijvoorbeeld:

  class Employee {
       private String name;
       private int code;
   // constructor
   public Employee(String name, int code) {
      this.name = name;
      this.code = code;
   }
       // getter
       public String getName() { return name; }
       public int getCode() { return code; }
       // setter
       public void setName(String name) { this.name = name; }
       public void setCode(int code) { this.code = code; }
    }

En wanneer u multi-werknemers wilt maken, maakt u de array zoals in C:

Employee[] arr = new Employee[100];  // new stands for create an array object
arr[0] = new Employee("Peter", 100); // new stands for create an employee object
arr[1] = new Employee("Mary", 90);

Antwoord 2, Autoriteit 9%

Ik zou een openbare klasse maken met openbare velden en een standaardconstructeur, zoals deze:

   public class Employee {
       public String name, last_name;
   // constructor
   public Employee() {
      this.name = "";
      this.last_name= "";
   }
    }
  ....
  //when using it
  Employee e = new Employee();
  e.name ="Joe";
  e.last_name = "Doe";

Antwoord 3, autoriteit 4%

In Java 16 zijn er Records(JDK Enhancement Proposal 395):

public record Employee(String firstName, String lastName, String id) {
}

Dit wordt geleverd met een canonieke constructor, field accessors, hashCode(), equals()en toString()implementaties.

>


Antwoord 4

Ik heb een groot probleem met structuren die niet worden ondersteund in Java. Ik ben een Android-app aan het schrijven die via Bluetooth gegevens ontvangt van een ingebouwd ARM-apparaat (geschreven in “C”). Deze gegevens zijn bij ontvangst een ingepakte array van bytes die de inhoud van de EEPROM van mijn embedded apparaat bevat.

In “C”, C++ of “C#” kan ik deze stroom van bytes eenvoudig “casten” naar een structuur die de EEPROM op het ingebedde apparaat vertegenwoordigt en programmatisch de leden van de structuur gebruiken door er simpelweg naar te verwijzen. In Java heb ik deze optie niet en er is geen goede manier om dit te doen, aangezien Java (behalve een obscure IBM-versie die verpakte klassen ondersteunt) je niet toestaat om “ingepakte” klassen te hebben waar de klasseleden zijn ingepakt zonder kop- en voetteksten voor elk klaslid.

Other episodes