1 名前:デフォルトの名無しさん [2008/01/03(木) 12:29:37 ] 前スレ [Java SE 7] 次世代Javaの動向 5 [dolphin] pc11.2ch.net/test/read.cgi/tech/1178925915 [mustang/Java SE 6] 次世代Javaの動向 4 [dolphin] pc11.2ch.net/test/read.cgi/tech/1163986696/ [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/
513 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:57:05 ] >>512 誰だおまえ?
514 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:01:03 ] >>513 これが噂の負け組みの人だから、かまっちゃダメ!!
515 名前:デフォルトの名無しさん mailto:とりえず上げとく [2008/03/07(金) 02:03:03 ]
516 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:30:30 ] こんなところにも負け組みの人が漂流してるんですね(笑い)
517 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:31:37 ] ID、IDってうるさい人、あなたも負けたんですか(笑い)
518 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:37:45 ] ちょっとわからないことがあるのですが、 ゴズリンさんいますか?
519 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 03:27:18 ] 今日の夜は長いですねw 冶金お疲れ様っす!!
520 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:09:52 ] >>495 Scalaは中の人の議論でもよく出てくる言語だよ。 やっぱりよく出来てる。使ってねーけどw
521 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:16:56 ] Control invocation syntaxで算術ifも書けるね。うれしい。
522 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 15:55:38 ] >>520 使えば分かるよ。Javaから見れば何でもありだからw
523 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:51:10 ] ニート達はもうどっか行っちまったか?
524 名前:デフォルトの名無しさん [2008/03/07(金) 22:44:28 ] ニート、ニートってうるさいんだよ!Java使ったってC#使ったっていいだろ!!!
525 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:52:21 ] 何この自演クセーの
526 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:19:40 ] 派遣はいていいですか(・_・)
527 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:09:17 ] >>525 ニート乙
528 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:10:46 ] 図星だったか…
529 名前:デフォルトの名無しさん [2008/03/08(土) 11:59:23 ] 派遣はいていいですか(・_・)
530 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:51:33 ] しつけーよwいいよ!いていいよw、むしろお願いするw
531 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:15:38 ] 派遣はいてないですか!?
532 名前:デフォルトの名無しさん [2008/03/08(土) 17:01:22 ] >>530 ニートなんですが…ボクちんもいいですか(・=・)
533 名前:デフォルトの名無しさん [2008/03/08(土) 22:44:17 ] >>530 誰だってJava使っていいですよね?
534 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:44:37 ] >>522 何でもできるとかそんなことじゃなくて、すごく良く設計されている。
535 名前:デフォルトの名無しさん [2008/03/09(日) 15:38:37 ] >>534 ボクちんニートなんですが…
536 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:07:15 ] rubyとscalaの大きな違いは、JavaVM上で動かすことを前提にしているかどうかだな。
537 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:25:37 ] 馬鹿そう…
538 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 01:34:42 ] >>478 > 激突スルー
539 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 11:37:58 ] どう使うかに絞った簡単な解説 Closures for Java jazoon.com/download/presentations/1680.pdf
540 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:49:32 ] ふと思った。例に出てくる for each とかで for each (String name, Thing thing : myMap) { if (thing.isCocksucker()) { return; // ← コイシはどこに return するのかね? } doSomething(name, thing); }
541 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:57:15 ] for eachの置かれているメソッドから抜ける。
542 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:24:55 ] >>540 >>540 >>540 >>540
543 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:45:25 ] そーいや、BGGA だと Listener系どーすんだろ? java.awt.event.ActionListener とかみたいに、メソッド一個の場合は良いけど java.awt.event.MouseListener とかみたいに幾つもメソッドある場合とか。 MouseAdapter 使っても名前指定できないとアレだし。CICE も同じ問題かかえてる。 FCM だと Named inner method が作れるから、この点は問題にならんのだけど。 やっぱ BGGA だと public void onMouseClicked({MouseEvent e => void} block) { addMouseListener(new MouseAdaptor(){ public void mouseClicked(MouseEvent e){ block.invoke(e); } }); } みたいな感じにすんのかなぁ? メソッド数が大変な事になるような気もするけど。
544 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:57:59 ] クロージャより関数オブジェクトとか関数リテラルみたいなラムダの方が欲しいんだけどなぁ。
545 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:32:42 ] >>544 クロージャと、関数オブジェクトとか関数リテラルみたいなラムダとの違いって?
546 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 22:20:39 ] >>543 void addMouseActions(java.awt.Component foo, {MouseEvent e => void} clicked, {MouseEvent e => void} released, {MouseEvent e => void} entered) { foo.addMouseListener(new MouseListenerBuilder() .setMouseClicked(clicked) // null check wished? .setMouseReleased(released) .setMouseEntered(entered); }
547 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:16:07 ] >>546 それだと順番間違えやすいし、順番間違えてもコンパイル時にチェックできないから 実行時に変な動作してから初めて気付く事になるような……
548 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:37:02 ] じゃあブロック引数は一つの関数にすればいいんじゃないの? 変な人。
549 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:09:04 ] それじゃ>>543 と変わらん
550 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 09:22:49 ] builderパターンを使うってアイデアもあるけど、 実際比べてみると匿名クラス使う場合とタイプ数もあんまり変わらんのよね。 builderパターン + クロージャ: addMouseListener(new MouseListenerBuilder().setMouseClicked({MouseEvent e => System.out.println("clicked"); })); adapter + 匿名クラス: addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ System.out.println("clicked"); } });
551 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:03:38 ] クロージャってこういう呼び出し方出来ないんだろうか・・・。 ({arg => hogehoge})(arg);
552 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:06:59 ] クロージャーよりもやっつけで盛り込んだ既存のライブラリ仕様を洗練させて欲しいんだが。
553 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:34:23 ] >>551 BGGA v0.5にはない。
554 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:34:44 ] 洗練って・・・ 下位互換考えるともう変更できんだろ・・
555 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:37:22 ] >>551 それだと単なるキャストだね。 argがクラス名と変数名/フィールド名で重複してるけど。
556 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:39:02 ] >>552 openjdkあたりにパッチ送れば? acceptされるとは限らんけど。
557 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:43:30 ] というか勝手にクラスライブラリ作ればいい。 将来採用されることもありうる。
558 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 13:50:47 ] 必要になれば、Cのtypedefみたいなのでもっとパワーアップしてるのがサポートされるんじゃないか。 タイプ量が多いとかはエイリアスで解決できるわけで、クロージャの言語仕様とは全く関係ない。 といいつつもJavaではtypedefみたいのは永遠とサポートされないと思うけど。
559 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:21:24 ] typedefとマクロはないだろうな
560 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 15:14:22 ] JavaFX はどうなったのさ。
561 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 16:00:16 ] >>558 ヘッダファイルを使うC言語と違って、 Javaのコンパイル単位はtypedefと相性悪いでしょ。 publicクラス毎に、何回も同じtypedefを書く必要出てくるし。 あと、typedef入れるより型推論が入った方が嬉しいぞ。
562 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:09:38 ] Cのtypedefのパワーアップとして考えられるのは、文字通りtype definedのこと。 型推論と似てるけど、型推論は動的にやるでしょw もしあるなら、typedefは静的におこなわれる、型(class)別名で、 変数のようにスコープを持つとかなら、 CやC++ templeteのようにバグとか追跡不可能で エラーメッセージも意味不明にまでなったりしないと思う。 だから、やっぱり長いしタイプ量が変わんないじゃんというのは分かるけど、 タイプ量が多いのとクロージャとは関係ない。
563 名前:デフォルトの名無しさん [2008/03/12(水) 17:13:03 ] 今やるならアノテーションになるけど、 結局はtypedefやりたいならアノテーションつかってツール作って自分でやってくれよってなるんじゃないか。
564 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:16:42 ] Adaのtypedefならいいわけか
565 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:56:30 ] typedefというよりも、別名(エイリアス)ってのがあればいいってわけだ
566 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:25:48 ] >>562 タイプ量が多いのとクロージャは関係ないよ。 タイプ量が多いと builderパターン+クロージャで リスナを生成するのが面倒くさいってだけで。 それに別名定義できても、C言語のヘッダファイルみたいなものがないと それほど便利にはならないっしょ。それよりは型推論の方がいいって事。 型推論も別名定義も両方あってもいいけどさ。
567 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:35:57 ] そーいや、>>45 には type aliasingあるけど、これも続報ないからどーなってんのかわからんね。 もっとも、これは generics でバカみたいに長くなった型名を短くてわかりやすいものにするのが 主な目的っぽいから、>>550 みたいに generics使ってない上に、 MouseListenerBuilder やら setMouseClickled やら MouseEvent やらの 個々の識別子は長すぎて読み易さを低下させてる、ってわけでもないのに 使うようなモンでもねーと思うが。
568 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:47:24 ] もういっそプリプロセッサがあれば良いんじゃね?
569 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:22:09 ] >>567 >>550 ならtype aliasingいらんだろ。 元から MouseListenerBuilder やら setMouseClicked みたいな名前使わなけりゃいいんだし。 っても、別名使うにしろ、元のから短い名前で定義するにしろ 可読性とのトレードがあるから短い名前考えるのも面倒だわな。 どっちかっつーと、>>116 みたいな引数の型推論入れたほうが楽だしタイプ量減る。 builderパターン + クロージャ + 短い名前: addMouseListener(new MLB().sMC({MouseEvent e => System.out.println("clicked"); })); builderパターン + クロージャ + >>116 みたいな引数の型推論: addMouseListener(new MouseListenerBuilder().setMouseClicked({ e => System.out.println("clicked"); }));
570 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:24:45 ] > addMouseListener(new MLB().sMC({MouseEvent e => System.out.println("clicked"); })); なにこれ
571 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:30:27 ] >>570 よーするに、可読性落とさないような名前が思いつかないなら >>550 のタイプ量は妥当だって事。
572 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 21:31:24 ] そもそも、タイプ量だけなら >>543 使って onMouseClicked({MouseEvent e => System.out.println("clicked"); }); で良いんだし。もしくは >>543 と control invocation syntax 使って onMouseClicked(MouseEvent e){ System.out.println("clicked"); }
573 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 21:42:20 ] 別にクロージャーが入っても何か新しいことが出来るようになったり 下らないミスが減ったりするわけじゃないんでしょ。拡張 for 並みに どうでもいいんだけど。
574 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 21:43:13 ] >>572 エイリアスやらマクロやらプリプロセッサやら出してくるぐらいなら、そっちのがいいね
575 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:01:29 ] 拡張forは便利だろ。 いちいちインデクサなんて書いてられるか可読性も落ちる。
576 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:04:29 ] インデクサ? Iterator の間違いじゃね?
577 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:10:25 ] javax書き換えられないようなsuperpackageはいらない、Sunの失態が無いなら良いけど
578 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:00:42 ] ↑ん?どういうこと?
579 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:01:12 ] >>575 C#に洗脳されすぎw
580 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:03:18 ] クラスとかメソッド名が長いってだけなら、ビルダークラスとかを継承してオーバーライドして自分で短い名前にしてくれよ。 それぐらい頭使え。
581 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:12:34 ] void hoge(a){actionPerformed(a);] で、短いメソッド名で実装して、それを呼び出すことね。
582 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:26:28 ] indexerって普通の英語なんだが。
583 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:30:00 ] Javaじゃそんな言葉使わんしここ日本。
584 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:31:02 ] 普通の英語って事は「索引を作る人」って意味で使ってるとか?
585 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:02:39 ] >>583 お前は日本語でプログラム書くのか?
586 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:16:46 ] 演算子オーバーロードが言語仕様にあれば Javaでもインデクサって普通に呼ぶだろうね。 Javaもinterface経由で演算子オーバーロードに対応したらいいのに。 AppendableとかCalculateableみたく、目的を明示すれば設計者も馬鹿しないでしょ。
587 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:21:01 ] 演算子オーバーロードは絶対にサポートしないといってたけど。
588 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:28:40 ] >>585 いやいや、言いたいのは話をわざわざ分かりにくくするために英語にする必要はないだろうということ。
589 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:33:24 ] C#ちゃんはいいかげんに巣に帰れよ
590 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:05:45 ] インデクサくらい理解してやってくれ。 ループ抽象(拡張for) コントロール・インヴォケイション・シンタックス は過激に便利ですよ。>>539 のp4-6見てください。 プログラム構造がかなりすっきりまとまります。 プログラム内でのコードの共通化も進みますし。
591 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 03:43:59 ] ↑もうこなくていいから。死んでくれ
592 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 06:40:12 ] 病的な過剰反応だな。明らかにネットに向いてない。
593 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 14:00:38 ] >>592 おまえも
594 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:56:17 ] >>561 別に相性は悪く無いと思う 以下のような感じでstatic importでtypedefを取り込めるような仕様にしておけば 問題無し -- A.java -- package a; public class Alias { type FileName = String } -- B.java -- import a.Alias._; public class B { public static java.io.RandomAccessFile open(FileName name) { .... } }
595 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 22:49:58 ] >>594 それをやるには static import とは別の仕組みが必要になるし、 どうせやるなら class Alias みたいなものをヘッダファイルモドキとして使うのは間抜けすぎる。
596 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 23:59:35 ] >>595 それ言っちゃおしまいでしょ。 java.lang.Math とか java.util.Collections とか、 クラス外にメソッド置いとけるんならクラス外に置きたいようなのは標準APIにも多いし。 Java でやるなら >>594 みたいなやり方しかないと思うけどね。
597 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:01:58 ] >>562 > 型推論と似てるけど、型推論は動的にやるでしょw MLなどの型推論はコンパイル時に静的にやるよ。 動的だったら、型を推論するまでもなくチェックすればいい。 >>567 が言っているような、 generics使って汎用に書かれたクラスに、 具体的なクラスを与えて、新たなクラスとしてpublicにする、 って機能は必須だと思う。 ただconcept(C++), type class(haskell)のような形の方が より汎用でスマートだと思う。単なるエイリアスじゃなくて 両クラスのグルーとなるコードも加えられるし。
598 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:05:28 ] >>596 クラス外メソッド定義とクラスエイリアスは別件。
599 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:15:29 ] >>598 クラス外メソッド定義したいって言ってるんじゃなくて 言語仕様が許すなら必ずしもクラス内に置く必要ないエイリアスやメソッドを クラス内に置かなきゃいけないのは等しくアレだって事
600 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 02:39:52 ] アノテーションでいいよ。機能的には違うけど、本質的に同じだし。
601 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 03:01:16 ] クロージャーなんて既存機能で十分まかなえるものの焼き直しなんかより もっと AOP 的設計が出来るようなアプローチしろよ。インスタンスフィールドへの アクセスもトラップできるようにすればそもそもプロパティ拡張もいらんだろが。
602 名前:デフォルトの名無しさん [2008/03/14(金) 03:44:37 ] クロージャで演算子オーバーロードもとラップできるといいけどな
603 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 05:49:16 ] > インスタンスフィールドへのアクセスもトラップできるようにすれば フィールドアクセスがめちゃくちゃ遅くなりそうだな
604 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 06:29:16 ] final 宣言されてない getter/setter と同等にできるだろ。めちゃくちゃの根拠が不明。 まぁプロパティアクセスに関しては「後で」「静的に」「他のソースを修正せずに」アクセサを 追加できれば十分だが。
605 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 06:51:54 ] また変な奴が常任してしまったな。
606 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 06:54:17 ] JS乙
607 名前:デフォルトの名無しさん [2008/03/14(金) 07:11:52 ] C#厨房よりはましw
608 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 07:28:45 ] というかおまえ誰だよ
609 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 07:33:04 ] 俺ビルジョイ
610 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 07:58:33 ] JSじゃイニシャル違うじゃんかよ
611 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:58:17 ] >>604 そか? 隠蔽されたフィールドに対するアクセスとかも考えたら プロパティモドキじゃ対応できないし馬鹿みたいにでかい仕組みが必要になると思うが。
612 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:18:31 ] JKが女子高生なんだからJSは・・・
613 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:22:35 ] 専門学校生だよね