- 1 名前:デフォルトの名無しさん mailto:sage [2006/11/20(月) 10:38:16 ]
- 前スレ
[mustang] 次世代Javaの動向 3 [dolphin] pc8.2ch.net/test/read.cgi/tech/1157227790/ 次世代Javaの動向 2 pc8.2ch.net/test/read.cgi/tech/1147881822/ 【Java】次世代Java・J2SE1.6の動向【Mustang】 pc8.2ch.net/test/read.cgi/tech/1081698555/ 2006年12月にMustang Java SE 6がリリース予定 Mustangの掲げる主な目標は以下の点にある。 * 互換性と安定性および品質の向上 * Easy of Developmentの実現 * WebサービスおよびXMLサポート機能の拡張 * リソース管理や診断機能の強化 * デスクトップ環境の強化 Java SE 6 じゃじゃ馬ならし www.javainthebox.net/laboratory/JavaSE6/
- 652 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:35:24 ]
- dot以外の記号がキモイならdot二つのx..hogeでもいいよ。
- 653 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:25:14 ]
- >>652
孔明あらわる
- 654 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:56:34 ]
- >>651
俺もそんな気がしたんだけど、>>650 だそうです。
- 655 名前:デフォルトの名無しさん [2007/03/14(水) 23:57:20 ]
- 記号でわざわざ入力二回って耐えられなくない?
- 656 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:00:24 ]
- 耐えられないなら++も--も使わずにプログラムを書いてくれ。
- 657 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:45:46 ]
- // << >> == && ||
↑これらも つか==なしとか縛りきつくね?
- 658 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:47:52 ]
- VBのプロパティとかdotだし、コード上で分かりにくいってことはなかった。
FlashのActionScript(ECMAScript派生)もread onlyプロパティがあったが、dotだね。 dot以外を選択するのは、正直コンパイラ屋の都合でしかないと感じる。 メンバ変数に@PropertyFieldアノテーションを施す程度で妥協して欲しい。
- 659 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:30:43 ]
- ちょっと待てECMAScriptは全部プロパティだ
- 660 名前:デフォルトの名無しさん [2007/03/15(木) 01:32:16 ]
- >>656-657
2chらしい模範解答だなw
- 661 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:52:21 ]
- IDEやJava用エディタならテンプレート機能が充実しているし
そんな構文糖は要らないってのも意見として尊重してほすぃ。
- 662 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 02:15:35 ]
- >>661
どうなんだろ、セマンティクスがハッキリするから getter,setterが分かりやすくなるという点ではIDEも歓迎なのでは? 実現方法はともかく。
- 663 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 04:06:26 ]
- >>661
コードの読みやすさが上がるのであれば、新しい構文糖の導入も大いに結構じゃないかい?
- 664 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 07:43:28 ]
- >>651
あきれる。 > 仮に追加しても何の影響もない。 そんなは事ない。
- 665 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 07:47:20 ]
- >>651
>仮に追加しても何の影響もない。 追加したら、java.beans.DesignTime を実装している既存のクラスを書き換えなきゃいけなくなるだろう。 影響がないって、馬鹿じゃないのか?
- 666 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 07:48:08 ]
- >>665
× java.beans.DesignTime ○ java.beans.DesignMode
- 667 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 08:18:45 ]
- >>661
java.net/pub/pq/142 とか見ると、 property構文は、XML構文に次いで人気がないんだよね。 java.net/pub/pq/141 とかだと、 very important と、somewhat important をあわせても 1/4 ぐらいだったりする。 まぁ、この手の投票がちゃんと機能してるかはわからんし、 構文糖なら要らないってのと、重要度が低いってのは同じ意見じゃないんだけど。
- 668 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 08:34:05 ]
- >>658
> VBのプロパティとかdotだし、コード上で分かりにくいってことはなかった。 もし問題がないなら dot を使うのに反対の人はあんまし居ないと思うんだが。 同じクラスでフィールドと同名のプロパティが持てる言語を出してきて わかりにくくないって言うんならともかく。 > メンバ変数に@PropertyFieldアノテーションを施す程度で妥協して欲しい。 それって、何か改善する?
- 669 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:09:07 ]
- >>668
> 同じクラスでフィールドと同名のプロパティが持てる言語を出してきて > わかりにくくないって言うんならともかく。 それなら、同名のフィールドとプロパティが共存できて、 さらにフィールドもプロパティも dot でアクセスする言語がわかりにくくないって言わないと。 (dotじゃなくても良いけど同じ記号でアクセスする言語)
- 670 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:17:17 ]
- >>651
> その例でinterfaceの方にisDesignTime()を > 追加するという仮定自体がそもそもありえないし ……。 isDesignTime() は元からあるメソッドですが。
- 671 名前:649 mailto:sage [2007/03/15(木) 10:23:39 ]
- >>670
おまえ逃げてないで俺の質問に答えろよ。
- 672 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 10:26:26 ]
- >>671
質問になってない。
- 673 名前:649 mailto:sage [2007/03/15(木) 10:31:39 ]
- >>672
答えになってない。
- 674 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 10:36:21 ]
- >>621
それだけじゃ解決しないね。 新プロパティ(dotでアクセス)と同名のフィールドが作れるなら setter/getterのプロパティと同じ問題が起こるし、 C#みたく新プロパティと同名のフィールドが作れなくするなら、 標準APIが新プロパティを追加したらユーザコードの書き換えが必要になる可能性がある。 これ以降は >>640 >>641 と同じ路線だな。 上記の書き換えを最小限に抑えようとすれば、 標準APIは極力 新プロパティを追加しない方向になるだろうから、 新プロパティの構文は言語仕様に定義されたが、 標準APIで 新プロパティが使えない、という本末転倒な事態が予測される。 つまり、使い勝手が悪い。
- 675 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 10:39:07 ]
- >標準APIが新プロパティを追加したらユーザコードの書き換えが必要になる可能性がある。
標準APIが新プロパティを追加したら、 そのclass/interfaceを継承/実装して同名のフィールドを使っていたユーザコードの書き換えが必要になる。
- 676 名前:649 mailto:sage [2007/03/15(木) 10:42:44 ]
- やっとわかったよ。お互い説明が下手だと苦労するなw
- 677 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 11:02:59 ]
- >>675
まぁ、interface に「新プロパティ」を追加したら、 どっちみち そのinterface を実装しているクラスの書き換えが必要になる。 既存のコードは setter/getter は実装してても、 「新プロパティ」まで実装してて書き換えの必要がないってのは考えにくいから。 この書き換えを最小限に抑えようとすれば、 標準API は、極力 abstract な新プロパティを追加しない方向になるだろうから 以下、>>674 と同文、と。
- 678 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 11:15:13 ]
- > 標準API は、極力 abstract な新プロパティを追加しない方向になるだろうから
標準API は、既存の setter/getter を置き換えるものも含めて、 極力 abstract な新プロパティを追加しない方向になるだろうから うーむ。既存の setter/getter は互換性のために残す事を想定してるから 置き換える、じゃないんな。まぁ、setter/getter を残しても残さなくても、 標準API に abstract な新プロパティを追加すれば同じだけど。
- 679 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:13:04 ]
- ゲーム関係に力を入れてけば自然とデスクトップ周りが強化されるからそっち系だな
OSを選ばないUDIライブラリとか、BGM周りはネイティブにディスパッチとかね。 標準であるかどうかってのがここらへんは大きい。
- 680 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:34:05 ]
- まずジョイパットか
- 681 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:05:33 ]
- ジョイパッドサポートは地味に大きいな
って10年前からいわれてるが あとはJOGLも標準ではいってくれるといいのだが 今はプラットフォームごとに用意してあげないといかんからWindows以外はめんどくさい 本当は新世代専用GCコールもほしい タイミングコントロールできて殿堂入りしないやつならアクション系もバリバリ使える
- 682 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:05:01 ]
- >>677
interfaceに追加したらそれを実装するクラスに影響があるのは、 「プロパティ」に限らず抽象メソッドでも同じだわな。 既存のinterfaceに「抽象メソッド」を追加したら他のクラスに影響が出る ↓ だから標準APIに「抽象メソッド」は追加できない ↓ 「抽象メソッド」は標準APIに使えないから無意味 あほか。
- 683 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:22:54 ]
- >>682
> 既存のinterfaceに「抽象メソッド」を追加したら他のクラスに影響が出る 普通は、既存の interface に抽象メソッド追加するのは慎重にする。 逆に、 今までにない interface を作る時は自由に抽象メソッドを定義できる。 > 「抽象メソッド」は標準APIに使えないから無意味 安易に追加できないが、「使えない」とか「無意味」とはならない。 abstract な新プロパティも、抽象メソッドと同じで、 今までにない interface を作る場合は自由に定義できるだろうけど、 既存の interface に追加する場合は慎重にならざるを得ないだろう。 既存の interface 経由で使えない事が予想される新プロパティは 「使えない」とか「使い勝手が悪い」と言える。
- 684 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:26:00 ]
- >>683
△既存の interface -> ○標準APIの既存の interface
- 685 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 01:10:18 ]
- java.sql.Connectionなんか増えまくりだった気がするが。
古い実装のを呼ぼうとするとErrorでも出るかな
- 686 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 01:11:37 ]
- >>683
既存のinterfaceを安易に拡張できないってのは当然だね。 >既存の interface 経由で使えない事が予想される新プロパティは なんで新プロパティに限って既存のinterface経由で使われることを 期待されなければならないんだろう?
- 687 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 01:16:08 ]
- >>682
> だから標準APIに「抽象メソッド」は追加できない > ↓ > 「抽象メソッド」は標準APIに使えないから無意味 ここで飛躍してる。基本的には「追加できない」==「使えない」とはならない。 で、setter/getter とは無関係な新プロパティシステムを導入したとして、 その新プロパティを、標準APIの既存の interface で使いたいと言う場合は ・新プロパティを追加すれば、その interface を実装していたコードを変更する必要が出る。 ・逆に新プロパティを追加しなければ、標準APIの既存の interface では新プロパティは使えない で、俺は標準APIの管理者は後者を選択すると予想するので、 その場合は新プロパティは「標準APIの既存の interface経由では使えない」ので 使えないとか、使い勝手が悪いと言えるだろう。 仮に前者を選んだとしても、コードの変更を迫られるので無問題とはならない。
- 688 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 01:23:35 ]
- >>686
> なんで新プロパティに限って既存のinterface経由で使われることを > 期待されなければならないんだろう? 限って? 他では期待されてないんだっけか?
- 689 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 01:27:18 ]
- >>688
限ってないよな。Closure だって、Closure Conversion とかで abstract なメソッドが一つだけの既存の interface に変換する事を考えてたりするし。
- 690 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 01:48:55 ]
- blogs.sun.com/ahe/entry/java_se_7_wish_list のリストとかを見るに、
たいてい inteface と関係ないか、既存の interface との協調にも配慮してあるよーな。
- 691 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 05:18:23 ]
- >>681
新世代・・・・ああああNewGeneration用のGCってことか。 いや、殿堂入りが無いというより、tenureの32をいじれるようになった方がいいかな。 ある程度、コア数が増えて並行処理が速くなると、OldGenerationを少なくして Newgenerationのtenureを32回より多くして、NewGenerationで運用したほうが 効率いいと思うんよねぇ。 昔、24CPUのマシン使った時、10GB程度のNewGenerationをParNewGCかけてたけど 確か0.5s程、ホンの一瞬だった。
- 692 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 07:42:00 ]
- >>688
class定義に影響する新機能としては例えばfunction-typeなんかがあるけど、 じゃあこれは既存のinterfaceに追加されて使われることを期待されてるの?
- 693 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:53:05 ]
- >>688
対抗馬である setter/getter の syntax sugar なプロパティなら 既存の interface経由で使えるしな。 それと比較しても 「使い勝手が悪い」といえるだろうね。
- 694 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:53:44 ]
- >>692
具体的に、どんな問題が出るんだ?
- 695 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:35:00 ]
- >>691
並列GCはデフォの状態よりスループットはいいけどレスポンスが大幅に悪化するぞ あとGC稼動のタイミングをコントロールできる10msのGCとコントロールできない0.1msのGCだと前者のほうがいいわけで
- 696 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 13:50:53 ]
- >>695
今のマシンスペックならGCに0.1msもかからんよ。 ゲームならヒープサイズとスタックサイズの調整で2Dまでならストレスなく遊べる。 やっぱメモリ食いは収まらないけど。 取り合えずただのデスクトップツールとしては実用的じゃない? ジョイパッド拾えるようになると同じ方向性で障害者用の入力補助装置の入力拾えそうでアクセシビリティ周りが格段に良くなって良いと思うけどな。
- 697 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 14:15:04 ]
- >>686
GCの時間はヒープサイズに綺麗に比例するのでなんともいえないよ 最近のマシン持っているけど0.5msきることは実際にゲームつくっていてまずない 新世代領域を少なくしてやっと0.2mくらいか インクリメンタルGC(現在の実装は並列GC)だとレスポンス悪化してるし、 デフォのGCだとFullGCがいつかは必ず起きるし、おきたら使い物にならない そもそもJava2DやJOGLなどライブラリによるGCはコントロールできなから 自分のコードでの調整は何も意味がない 0.1mが0.05mであっても同じこと リアルタイム性ってのは早いかどうかじゃなく、コントロールできること、把握できることだから
- 698 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 15:41:40 ]
- >>571
まるでApache Antの記法だな
- 699 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 15:42:31 ]
- >>572
四項演算子か。 Checkstyleプラグインが警告しそうだな
- 700 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 19:54:46 ]
- >>693
既存のinterfaceに public int getHoge(); なんて追加したら おんなじように「問題」は発生するが? >>694 何の問題も出ないだろう。既存のinterfaceに追加したりしなけりゃ。
- 701 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 20:14:48 ]
- >>700
setter/getter の syntax sugar なプロパティであれば、 既存の interface で、既に宣言されている setter/getter で プロパティにアクセスする分には問題は発生しない。 setter/getter と関係のない新プロパティシステムを導入した場合、 既存の interface で、既に宣言されている setter/getter ではプロパティにアクセスできない。 で、標準API みたいに変更すると影響範囲が大きい既存の interface は安易に変更できないから 新プロパティを追加したくても既存の interface には追加できず、 既存の interface からは、この新プロパティは使用できない可能性が高い。 故に setter/getter の syntax sugar よりも 「使い勝手が悪い」といえる。
- 702 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 21:11:41 ]
- 相変わらず説明が下手だな。
- 703 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 21:19:01 ]
- さすがに読解力に問題があるだろう。
- 704 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 22:07:53 ]
- >>701
>既存の interface で、既に宣言されている setter/getter ではプロパティにアクセスできない。 既存の「getter/setter」と関係ないプロパティが前提なら、当然既存のinterfaceにも 存在しているわけがないだろう。ここでアクセスしようとしている「プロパティ」ってのは 何のことを言っているんだ? もし「getter/setter」のことならば、それはプロパティとは関係のない単なるメソッドだから、 普通にメソッドとしてアクセスすればよい。 もし新たにプロパティを追加することを想定しているのならば、それはインターフェースの 拡張に他ならないから、他に影響が出るのは当然。それは別にプロパティに限らない。
- 705 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 22:18:48 ]
- >>704
> ここでアクセスしようとしている「プロパティ」ってのは 当然、setter/getter と関係ない新プロパティシステムのプロパティ。 で、プロパティの持つものは、既存の setter/getter で表わされるのと同じもの。 プロパティ導入の大きな動機の一つに、setter/getter を宣言するのも、 呼び出すのも冗長だという不満を解消するというものがある。 setter/gettter とは別の新プロパティシステムを使えば、 既存の interface にある、既存の JavaBeans のプロパティに対して、 setter/getter を呼び出すのが冗長だという不満を解消できない。 仮に Tiger で追加された Generics が、もし仮に既存の Collection API と協調できず、 List でも Map でもパラメタ型を取れなければ、使い勝手が悪いと評価されるだろう。 それと同じ。
- 706 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:00:03 ]
- あはははは。
foo.getBar()がfoo->barになっただけでどんな不満が解消するんだよ。
- 707 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:07:26 ]
- 流れぶったぎるがJSR-296使ってみた奴居る?
- 708 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:08:42 ]
- >>706
なら、なんでプロパティが必要なんだ? それに、最初出てきた案は setter/getter の syntax sugar なんだぜ?
- 709 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:18:32 ]
- >>703
わかってもらえない場合は、別の角度からの説明を試みるべきだと思う。 >>706 だよな。いらねーよな、こんなプロパティもどき。初心者が混乱するだけ。
- 710 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:22:40 ]
- >>709
普通は説明されなくてもわかるだろ。あんなの。 気づかない方が頭がおかしいんだよ。
- 711 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:35:01 ]
- >>710
「普通」とか言うけど、「使い勝手が悪い」っていう結論は主観が入り込んでるだろ?
- 712 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 00:10:42 ]
- ->で全然問題なし
- 713 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 00:25:29 ]
- JavaBeans のプロパティと同名のフィールドを持てる事が問題ってところから
>>621 で > いまのキモいJavaBeansのgetter/setterはプロパティとはなんの > 関係もないことにすりゃ、それで解決する という意見が出た。 新プロパティシステムを作れば、フィールドと同名のプロパティを禁止できるからって話なんだろうけど、 >>674 のような問題も予想されるため、完全な解決とはならない。 結局、限定名のルールとかフィールドアクセスのルールが ぎちぎちに詰め込まれているので dot でフィールドにアクセスする事と、 dot でプロパティにアクセスする事が相容れないと考えた方が良いみたい。 それとは別に、>>640、>>641 で言ったように setter/getter とは別の新プロパティシステムを導入する場合、 setter/getter の syntax sugar ならプロパティとしてアクセスできた情報の一部に プロパティシステムを使ってアクセスできない事が予想される。 結局、「setter/getter とは別の新プロパティシステム」を導入しても setter/getter のsyntax sugar で問題とされた事を解決できず、 さらに setter/getter の syntax sugar では出なかった問題も発生する。 まぁ、「setter/getter とは別の新プロパティシステム」の詳細を見ての評価じゃないけど 現在の情報からなら setter/getter の syntax sugar より「使い勝手が悪い」と言える。
- 714 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 00:28:20 ]
- >>713
どうでもいーけど長文ウザイ
- 715 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 10:20:14 ]
- 説明が下手なんだからしょうがないよ。
- 716 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 10:22:41 ]
- 説明されなくたって、既存のプログラムに新機能を追加して、
どんな影響が出るかを予見できないってのは技術者として拙いだろ。
- 717 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 10:30:57 ]
- じゃあレスする必要ないじゃんw
なんで一生懸命説明してんの?
- 718 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 10:33:03 ]
- >>716-717
次世代Javaと関係ない話題だな。 続きは他所行ってやれ。
- 719 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 12:59:19 ]
- >>718
たった2レス程度で…気が短いな
- 720 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:16:28 ]
- >>713
結局、getHoge()/setHoge()を使わない新プロパティシステムを導入しても、 既存のgetHoge()/setHoge()を使えないから使い勝手が悪いということかw
- 721 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:14:19 ]
- ふー、びっくりした。でも、反対派の意見はほぼ一点に集中している。
プロパティは既存の言語機能と干渉するから、導入の必要はないというもの。 それ、ほんとなのかなあ(ry
- 722 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:44:26 ]
- サイレントマジョリティの声を尊重してプロパティを導入することにしました。
当然のことだよね
- 723 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:51:13 ]
- >>721
既存の言語機能と干渉とかいう以前に、そもそも「そんなに必要な物なのか」って ことがまずあるんじゃないか? プロパティの仕組み導入の話が出てるのは、 「定義するのも使うのも既存のgetter/setterの仕組みだとめんどくさい」 という要望から来てるんだろうけど、 「めんどくさい」っていう理由だけで言語仕様変えてったらとんでもないことになる気がする。 相当面倒、ってのが、すごく簡単ってなるならまだ納得できなくもないけど、 IDE使ってる人の中にはgetter/setterがそこまで面倒とは思わない人もいるんじゃないかとも思う ちなみに個人的にはgetter/setterの使用側は今のままで十分。 ただ、定義するのが面倒だから、アノテーションとかで自動でデフォルトのgetter/setterが 作成される仕組みができるぐらいでも満足だよ。
- 724 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 02:14:53 ]
- a = obj get foo;
obj set foo = 1;
- 725 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:54:34 ]
- >>722
>>667 の結果を見るに、 プロパティ要らないって意見の方が サイレントマジョリティで、 プロパティ欲しいと言ってる方が、声の大きい少数派。
- 726 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:47:22 ]
- >>721-722はネタなんで相手しなくていいです
- 727 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:23:09 ]
- >>724 はネタじゃないのか……
- 728 名前:724 mailto:sage [2007/03/19(月) 20:34:17 ]
- >>727
ネタです。
- 729 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:15:19 ]
- >>723
うむ。 プロパティ自体は特にそんなに欲しいものでもないが、自分で開発していて コードの半分以上が意味のないgetter/setterで占められているクラスが 山のようにあるのを見ると、何かが間違ってる気がしてならない.。
- 730 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:21:52 ]
- あるBeanのプロパティ値ともうひとつのプロパティ値を足し算してその結果を格納とかめんどくさすぎ
同様にBigDecimalの演算もきっつい
- 731 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:51:51 ]
- >>730
プロパティに足し算して格納とかってそんなに使う? 俺、WEB開発系がメインだけど、プロパティに対して加算とかって ほとんどしたことないし、BigDecimalも使ったことない。 きっとプロパティが必要な分野と、たいして必要とされない分野があるんだろうな。
- 732 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:17:10 ]
- getHoge()がめんどくさいから->でやらせろって言ってる人は、
やっぱりadd()がめんどくさいから演算子オーバーロード使わせろ とか言うのかな。
- 733 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 02:00:33 ]
- BigDecimalは業務系はこれしか使わないというくらい使う
BigDecimalだけはStringのようにシンタックスシュガーとしてaddとかやってほしいな プロパティの足し算引き算ってのは普通にあるっしょ 金額とか在庫とかいくらでも 特にO/RマッパやBeanBinding関係使うと頻発
- 734 名前:しろうと mailto:sage [2007/03/20(火) 09:36:43 ]
- public class Foo {
public int bar; } じゃだめなん?
- 735 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:15:22 ]
- セット時やゲット時に加工が出来ないからダメ
それに定義のほうはどうにでもなるためたぶん問題になってない
- 736 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 22:24:23 ]
- VMがグリッドコンピュータに対応するのはいつだ?
- 737 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 22:34:18 ]
- VMがグリッドコンピュータのネイティブな基盤になればいいのに。
- 738 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 22:38:44 ]
- 設定がないと動かないJVMは面倒だな。
グリッドとかは、アプリケーションの下で何らかのグリッド制御部が 動いていて、JVMのリソースとしてグリッドが見えるって前提だろうから MVMが実現して、アプリケーションの起動とJVMの起動が分離するまでは あんまり興味がないね。
- 739 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 23:23:42 ]
- クラスタ用OSとしてのJVMなら
BEAだかが仮想化技術として構想を発表してたはず
- 740 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 23:27:12 ]
- >>738
グリッドが見えるのを前提にする必要はないでしょう。 HotSpotが全自動で動的最適化を行うように グリッド制御部が全自動でスレッド分散を行うのが あるべき姿だと思います。
- 741 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 22:20:18 ]
- JDK7 build10
download.java.net/jdk7/changes/jdk7-b10.html download.java.net/jdk7/binaries/ NewFeatureは地味なパフォーマンス向上と getAsText,setAsTextか。これはちょっと嬉しいな。
- 742 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 05:37:51 ]
- グリッドより先にjavacがメニーコアをフルに使用するための中間コード
を生成することになることが重要。 PGがthreadを手書きしてでしか対応できないというのではコストがかかりすぎる。
- 743 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 13:15:00 ]
- プロパティの話に戻りますが、
やっぱ、何か明示的にプロパティを示す構文がほしい。 と思ったのは、eclipseでリファクタリングするとき。 getter側をリネームしたら、setter側も変わってほしいし、名前の定数も変わってほしい。 public static final string PROPNAME_XXX = "XXX"; public Object getXXX() { ... } public void setXXX() { ... } の三者の一貫性を、自動的に保ちたい。 なんか、アノテーションつけとくと、eclipseが、それをヒントに一括リネームしてくれる だけでもいいんだけど。
- 744 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 14:16:16 ]
- それはプロパティ構文あってもなくてもあんまり変わらないのでは。
- 745 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 14:25:33 ]
- >>743
getter/setter はまだしも、 > public static final string PROPNAME_XXX = "XXX"; の必要性が良く分からん。
- 746 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 14:42:25 ]
- 俺もその部分が?だな
名前だけで型がないし、そもそも型が要らないならenumでいいし まさか、文字列の中身がクラス名とか
- 747 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 15:40:52 ]
- >>745
>>746 プロパティ名を変えるときに、プロパティ名の文字列リテラルがソース中に散らばってると、 修正がめんどくさいから。 IDEの完全一致文字列リテラルの置換でできなくはないけど、"item"、"count"なんてプロパティ名 だと、無関係な文字列に誤爆するかもしれん。
- 748 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:01:43 ]
- >>747
>修正がめんどくさいから。 得てしてこういう理由で出てくるワークアラウンドは 引きずらない方がいい悪習慣である可能性が高い
- 749 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 18:19:33 ]
- >>748
いや、一つの識別子をソース中に書くのは1回で、あとは参照に置き換えるってのは、 コードのメンテナンス性を保つ上で、ものすごく基本的なことだと思うが。 getXXX, setXXXというメソッド名は、XXXというプロパティ名に従属する識別子なんだから、 ソース中の1箇所の変更で、全てが整合性を保った状態で変更されるのが理想。 C#では、それを文法で強制している。javaでは、整合性の保持はプログラマ任せ。 プロパティ名変更する度に、getXXX、setXXX、firePropertyChangeの引数、全て変更って、 バカバカし過ぎる。せめて、IDEに面倒みてもらいたい。 YYYListener、addYYYListener、removeYYYListenerも、相互に関連する名前なんだから、 ソース1箇所の変更で全てが修正される方が望ましい。 これも、C#ではeventで実現できるが、javaはプログラマ任せ。 javaは保たれるべき一貫性の保持を、文法で強制するんじゃなくて、守るべき ルールとして与えてるだけなんで、そのルールが守られることのチェックを、アノテーションでできてほしい。 addYYYListenerにしても、 @AddListenerMethodFor(YYYListener.class) void addYYYListener(YYYListener listener) {} みたいにして、名前の整合性がなかったら、コンパイラで検出できるようにすべきだと思う。 IDEではYYYListenerをリファクタリングでリネームしたら、addもremoveもリネームできて、ほしい。 javaは、識別子の命名ルール関係で、コンパイラでは検出できないけど、 守られていないと正しく動作しない決め事が結構ある。 そのあたり、アノテーションでバンバン検出できるようになると良いんだけど。
- 750 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:16:31 ]
- C#は詳しくないが、プロパティ名を変更したとき、
そのプロパティを実際に使用している箇所の変更は不要なの?
- 751 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 19:26:01 ]
- private int myVar;
public int MyProperty { get { return myVar; } set { myVar = value; } }
- 752 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:00:03 ]
- >>749
> getXXX, setXXXというメソッド名は、XXXというプロパティ名に従属する識別子なんだから、 これも別の概念なんだよね。BeanInfo や PropertyDescriptor を自分で書いてる人は hoge って名前のプロパティで、void hoge(Object) を setter に、Object hoge() を getter に指定する事も出来るし。 もっとも、真面目に BeanInfo 見てないフレームワークだとプロパティと認識してくれないかもしれんけど。 > バカバカし過ぎる。せめて、IDEに面倒みてもらいたい。 ここは同意なんだけど、IDEで吸収するのか、言語/コンパイラで吸収するのかってのもあるし。 とりあえず、現状だと言語/コンパイラのレベルで BeanInfo 扱うのは面倒っぽい。 例えば、今コンパイルしようとしてる Hoge.java の BeanInfo を扱うのが面倒。 PropertyDescriptor の getWriteMethod とか getReadMethod とかで、 まだコンパイルされてない Hoge.class の java.lang.reflect.Method 取るっても取れないだろうし。 これがないと、プロパティ名を getter/setter に変換できないし。
|

|