JavaはC++ struct
に類似していますか:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
独自のデータ型を使用する必要があります。
Javaには間違いなく構造体がありません:)しかし、ここで説明するのはJavaBeanクラスのように見えます。
Javaの構造体に相当するものは
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
そして、適切な状況ではそれで何も悪いことはありません。カプセル化されたデータを持つクラスをいつ使用するかという点で、実際にC++の場合とほぼ同じです。
JavaにはC++の構造体に類似したものはありませんが、すべてのパブリックメンバーでクラスを使用できます。
実際、C++の構造体はクラスです(たとえば、そこでメソッドを定義でき、拡張でき、クラスとまったく同じように機能します)、唯一の違いは、デフォルトのアクセス修飾子がpublicに設定されていることです(クラスがprivateに設定されている場合)デフォルトで)。
これは本当にC++の唯一の違いであり、多くの人はそれを知りません。 ; )
はい、クラスはあなたが必要とするものです。クラスは独自のタイプを定義します。
Project JUnionでは、クラスに@Structアノテーションを付けることで、Javaで構造体を使用できます
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
プロジェクトのウェブサイトの詳細情報: https://tehleo.github.io/junion/
「本当に」純粋な構造は、Javaではサポートされていません。たとえば、C#は、値を表し、いつでも割り当てることができるstruct
定義をサポートしています。
Javaでは、C++構造体の近似値を取得するユニークな方法
struct Token
{
TokenType type;
Stringp stringValue;
double mathValue;
}
// Instantiation
{
Token t = new Token;
}
(静的バッファまたはリスト)を使用せずに
var type = /* TokenType */ ;
var stringValue = /* String */ ;
var mathValue = /* double */ ;
そのため、変数を単に割り当てるか、クラスに静的に定義します。
はい、Javaにはまだ構造体/値型がありません。しかし、次のバージョンのJavaでは、C#のstructに似たinline class
を取得し、割り当てのないコードを書くのに役立ちます。
inline class point {
int x;
int y;
}