注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。
C言語からプログラミングを始めた場合、Javaのプログラミングの学習を行った際に時折遭遇するものとして、「Javaで構造体を表現したい時はどうすればいいのか」という問題がある。Javaでは構造体がないので、クラスで代用するという方法がある。
C言語では以下のような構造体を定義できる。
typedef struct _Hoge
{
int fuga;
int piyo;
}Hoge;
このような構造体は、Javaでは直接表現することができない。したがって、クラスで代用することになる。
オブジェクト指向の理念上、基本的にはアクセサを使用することが求められるため、上記の構造体をJavaで表現する場合は以下のようになる。
public class Hoge {
private int _fuga;
public int getFuga() {
return this._fuga;
}
public void setFuga(int val) {
this._fuga = val;
}
private int _piyo;
public int getPiyo() {
return this._piyo;
}
public void setPiyo(int val) {
this._piyo = val;
}
}
ただ、この場合は意味合い的には目的を果たしているのだが、コードの記述量が多くなるということと、メソッドで変数の取り出しと代入をする必要があるなど、C言語のように簡潔な記述を行えないという問題があるため、Javaの理念からは逸脱するが、以下のような書き方をすることもできる。
public class Hoge {
public int fuga;
public int piyo;
}
この場合は、C言語の構造体のように変数の代入が行えるようになる。
上記のいずれかの方法が考えられるが、いずれも利点と問題点があるため、よく考えた上で最適なものを選ぶと良いだろう。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。