質問
そこで、私の故保するたJava n00b最近まで、私にとって露出をもたら少しショックJavaでなくC#風物件!
Okから出ない人も結構多いですが。しかし、もできます誓してい物件getter/setterコードをJava一つのコードベースできなかったことは覚えていることができます。どのようにしたことを実現するのでしょうか。あの言語拡張しょうか。すでに関連Xsltproc、または何かな?
解決
が標準パターンのためのsetterか、セッターをJavaと呼ばれる 豆特性.基本的にはその他の方法で開始 get
, は、引数のない返す値は、物件取得の名前のプロパティとして、他のメソッド名と小文字の開始文字).同様に set
作セッターのボイド法単一の引数に使います。
例えば:
// Getter for "awesomeString"
public String getAwesomeString() {
return awesomeString;
}
// Setter for "awesomeString"
public void setAwesomeString( String awesomeString ) {
this.awesomeString = awesomeString;
}
最Java Ideを生成するこれらの手法のまま、それをEclipseでの移動にカーソルの分野に打ctrl-1、それを選択するオプションリストから).
そのような、読みやすさのため、実際のご利用 is
や has
場 get
boolean型の特性をもと:
public boolean isAwesome();
public boolean hasAwesomeStuff();
他のヒント
驚いていないことを述べた ロンボクプロジェクト
あり、現在プロパティjava.その他の機能です。
もし ロンボクプロジェクト この改善に努めます。あまりに人気の毎日です。
なので、使用している場合は、ロンボクには:
@Getter @Setter int awesomeInteger = 5;
このコードを生成 getAwesomeInteger
や setAwesomeInteger
しています。もので似た C#の自動実装性.
ことができる情報のロンボク島においてsetterか、セッター こちらの.
きていたことから名前をとって その他の特徴 しています。私のお気に入りは:
ロンボクには、統合Ideでに発生するという方法が存在した(発案のもとに、授業内容は、宣言およびリファクタリング).
一部のロンボクであるその他のプログラマが知らないかもしれないです。できることが delombok このコードでは、回避策ります。
"Javaにサポート"を提案したJava7なくされたものの翻訳であります。
見 http://tech.puredanger.com/java7#property よりリンク情報が興味がありました。
Beanの条約は、シンプルにわかりやすく書くようにします:
private int foo;
public int getFoo() {
return foo;
}
public void setFoo(int newFoo) {
foo = newFoo;
}
一部、その他の言語のJVMは、例えば、Groovy、overridableの特性を備えたスレッドセーフで、C#、例えば、
int foo
するアクセスな .foo
を活用したデフォルト getFoo
や setFoo
の実装をオーバーライドすることができなどが必要です。
public class Animal {
@Getter @Setter private String name;
@Getter @Setter private String gender;
@Getter @Setter private String species;
}
このようなものC#ます。この http://projectlombok.org/
は必要ないかもしれませんが、"お得"および"設定"接頭辞であるために、見ような特性は、いようになります:
public class Person {
private String firstName = "";
private Integer age = 0;
public String firstName() { return firstName; } // getter
public void firstName(String val) { firstName = val; } // setter
public Integer age() { return age; } // getter
public void age(Integer val) { age = val; } //setter
public static void main(String[] args) {
Person p = new Person();
//set
p.firstName("Lemuel");
p.age(40);
//get
System.out.println(String.format("I'm %s, %d yearsold",
p.firstName(),
p.age());
}
}
最Ide for Javaは自動的にgetterおよびsetterの生成コードすれば欲しいと思います。が異なる条約、およびIDEのようにEclipseを可能にするを選んで使用したい、でも定義します。
Eclipseも含まれの自動リファクタリングを可能にする包み、財産、ゲッター、セッターで変更すべてのコードにアクセスする直接宿泊施設で使用のゲッターやドセッター。
もちろん、Eclipseでのみを変更するコードを知っては外部の依存関係すが壊れる恐れがあったような大人のリファクタリング.
から ジェフリー-リヒターの 書籍 CLR C#:(これは、理由物件が追加されませんJAVA)
- 財産法の例外がスローされる場合;フィールドアクセスのない例外がスローされます。
- 物件を渡すことができませんとして
out
またはref
パラメータをチューニング方法分野です。 - 物件のメソッドが長い間実行;フィールドアクセスを常に完了
ます。共通の理由で利用性は実行スレッド同期
で停止し、スレッドも、そのため、物件べきではない
場合に使用してスレッドは同期が必要です。こうしたもとで、方法が好ましい。また、もしあなたのクラスアクセスできる遠隔(例えば、クラスから
System.MarshalByRefObject
)を呼び財産の方法は非常に遅く、 そのため、方法のいずれかであることが好ました。私の考えでは、派生クラスMarshalByRefObject
な利用ます。 - 呼び出された場合は複数回連続性のメソッドから返される値が異な各
時間分野で同じ値を返します。の
System.DateTime
クラスは、読み取り専用Now
ィを返します。タムクエリをこの 財産で返される値が異なります。これは間違い、およびMicrosoftの希望する このクラスを作っているという方法ではなく物件です。Environment
'sTickCount
物件の別の例で、この間違いです。 - 物件のメソッドが観察され、副作用のフィールドアクセスのないます。その他の すなわちユーザのタイプは設定できるため様々な特性により定義されたタイプ 任意の順番でその選択は気づかずに他の異なる挙動のタイプです。
- 産方法は別途メモリへの参照を返しますか ていない実際のオブジェクトの状態に、変更、返されるオブジェクトがない 効果は、元のオブジェクト;問い合わせの分野で返しますへの参照オブジェクト ることを保証すると、元のオブジェクトの状態です。作業性 このコピーを返しますできる非常に混乱を開発し、この特性は頻繁に な記載されています。●
私のJava経験はそれほど高くはないのいずれかで、どなたでもお気軽に修正しました。がAFAIKの条約は、シンプルにわかりやすく書く方法はこのように:
public string getMyString() {
// return it here
}
public void setMyString(string myString) {
// set it here
}
を使用している場合、eclipseでの能力への自動生成にゲッターは、設定メソッドの内部属性で置するとtimesavingツールです。
私は放Java5/6注釈の注釈プロセッサめます。
チェック http://code.google.com/p/javadude/wiki/Annotations
ドキュメントは、ビットの光が、quickrefうに考えます。
基本的に生成するスーパークラスのsetterか/セッター(およびその他多くのコードを生成すことができました。
サンプルのクラスのようにな
@Bean(properties = {
@Property(name="name", bound=true),
@Property(name="age,type=int.class)
})
public class Person extends PersonGen {
}
多くのサンプルでもあるランタイムの依存関係を、生成されます。
私まで送ってメールをだしたりすることができまとって便利です!--スコット
ありませんィキーワードコロジカルフットプリントのようにあらわれることもありますのでクライアントまで、フルのC#)最寄りの方には1単語のgetter/setterはC++:
public class MyClass
{
private int aMyAttribute;
public MyClass()
{
this.aMyAttribute = 0;
}
public void mMyAttribute(int pMyAttributeParameter)
{
this.aMyAttribute = pMyAttributeParameter;
}
public int mMyAttribute()
{
return this.aMyAttribute;
}
}
//usage :
int vIndex = 1;
MyClass vClass = new MyClass();
vClass.mMyAttribute(vIndex);
vIndex = 0;
vIndex = vClass.mMyAttribute();
// vIndex == 1
前述のとおりのためのeclipse統合開発環境(IDE)でアクセス用メソッドます。
することができますを使用.
作成アクセス用メソッドのためのクラス、クラスファイルを右クリックでは、ソースコードエディタのメニューコマンドRefactor、封止す。ダイアログが開きます。クリック選択し、をクリックしRefactor.Voilà,
とともに、