DOES JavaはC ++のアナログを持っていますstruct
:
struct Member {
string FirstName;
string LastName;
int BirthYear;
};
自分のデータ型を使用する必要があります。
回答:
Javaには間違いなく構造体がありません:)しかし、ここで説明するのはJavaBeanのようなクラスのようです。
inline class
、近い将来、構造体のようになると私は信じています。
Javaでは構造体に相当します
class Member
{
public String FirstName;
public String LastName;
public int BirthYear;
};
そして、適切な状況ではそれは何も悪いことではありません。カプセル化されたデータを持つクラスをいつ使用するかという点では、C ++の場合とほとんど同じです。
実際、C ++の構造体はクラスです(たとえば、そこでメソッドを定義でき、拡張でき、クラスとまったく同じように機能します)。唯一の違いは、デフォルトのアクセス修飾子がパブリックに設定されていることです(クラスの場合はプライベートに設定されています)。デフォルト)。
これは本当にC ++の唯一の違いであり、多くの人はそれを知りません。; )
JavaにはC ++の構造体に類似したものはありませんが、すべてのパブリックメンバーでクラスを使用できます。
public
ですか、少なくともパッケージの内部に保持しないのはなぜですか?そのようなクラスは、通常、APIでの使用には適していません(可能なnull
参照のためだけの場合)。常に最小限の可視性を使用してください!
Project JUnionを使用すると、クラスに@Structアノテーションを付けることで、Javaで構造体を使用できます。
@Struct
class Member {
string FirstName;
string LastName;
int BirthYear;
}
プロジェクトのWebサイトで詳細を確認してください:https://tehleo.github.io/junion/
はい、Javaにはまだ構造体/値型がありません。ただし、次のバージョンのJavaではinline class
、C#のstructに似たものを取得し、割り当てのないコードを作成するのに役立ちます。
inline class point {
int x;
int y;
}
「本当に」純粋な構造体は、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 */ ;
したがって、変数を割り当てるか、静的にクラスに定義するだけです。
firstName
、lastName
およびbirthYear
(またはyearOfBirth
もちろん)。