You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
cero_tさんが書かれたラムダ禁止について本気出して考えてみた - 9つのパターンで見るStream API は、とても良い記事です。Stream APIで実際に書いてしまいそうな、従来のfor/if文より読みにくいコード、予期せぬ不具合を起こしうるコードを例示し、いくつかの教訓を導き出しています。 何より、社内で「ラムダ式禁止、Stream API禁止」という悲しいことにならないように手を打とう! ラムダ式やStream APIの使い方やうれしさ、そして危ういところを社内の勉強会などで広げていこう! という、前向きな主張がすばらしいです。私も見習っていこうと思います。 さて本記事では、cero_tさんが挙げられている8の教訓のうち、次の2点(カッコ内は私の補足です)について、少し異論を述べたいと思います。 (4) collectをしたら一度ローカル変数に入れよう!(collectで作ら
Java初心者の開発者です。 PythonやPerlのようにJavaのメソッド返したいのですが、どうすればいいのでしょう?Pythonだと def func(): return 1, "func" のようにかけます。Cの場合だと、 void func(int* i, char** s) { *i = 1 *s = "hoge"; } のようになります。Javaではどう書くのが正しいのでしょう。僕が思いついた方法を書きます。 方法1(配列を使う): class C { void func(int[] i, String[] s) { i[0] = 1; s[0] = "hoge"; } } 方法2(オブジェクトを返す): class C { public class D { public int i; public String s; } D func() { D d = new D();
1 kazu@iij.ad.jp 2 3 Paul Graham 4 Andrew Hunt and David Thomas 5 6 Java 7 Java Java Java 3 8 Haskell Scala Scala 9 10 Java Java Dean Wampler AWT ActionListener public interface ActionListener extends EventListener { public void actionPerformed(ActionEvent e); } 11 AWT ActionListener import java.awt.*; import java.awt.event.*; class ButtonApp { private final Button button = new Button(); public Bu
遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド
11/10に開催されたJJUG CCC 2012 Fallでジェネリクスについてセッションを行いました。 このエントリはセッション内容を補足するものです。本セッションはジェネリックなクラスの設計を行えるようになって欲しいという狙いで話をしました。ジェネリックなクラスを利用できるというのは前提条件として書いてます。入門的な内容であれば Javaジェネリクス再入門 - プログラマーの脳みそ を参考にしてください。 セッション資料はこちら ジェネリクスの基礎と応用 JJUG CCC 2012 Fall ジェネリクスのスコープ まずジェネリクスのスコープの話から入ります。Javaのジェネリクスには2つのスコープがあります。 メソッドをスコープとした型変数 インスタンスをスコープとした型変数 後者はおなじみの public interface List<E> などの型変数です。 これに対して pub
irofさんのブログを見て、自分ならどう書くかなーと思ったので、読み進める前に書いてみました。 その結果、本題のアルゴリズムとは全然関係ないところで疑問を持ったので、グデグデとメモします。 元エントリ irofさんによる元エントリはこちら。 リストを項目ごとに集計する http://d.hatena.ne.jp/irof/20111203/p1 {code, 名前, 数値} というデータ構造のリストについて、code(idみたいなものです)をキーに数値を集計したい。このとき、Javaでどう書くか?というお話です。 書いてみた import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; imp
Javaの例外処理で知らないと損する7つのテクニック:【改訂版】Eclipseではじめるプログラミング(24)(1/3 ページ) これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipseとJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります(この回と前回のみ、別連載「EclipseでJavaに強くなる」の改訂版です。今回は第4回Javaの例外のテクニックを知る」の改訂版です) 前回の「プログラマの宿命! 例外とエラー処理を理解する」では、Javaにおける例外の用途と基本的なコードの書き方、例外が発生するさまざまなケースについて理解しました。 今回は、独自に例外を定義する方法や、ちょっとした例外のテクニックを紹介します。 【1】Eclipseで独自の
Java Advent Calendar 2011 の18日目です。 17日目の記事は JavaEE使ってウェブアプリケーションつくろうよ - 水まんじゅう2、 19日目はJavaエバンジェリストの寺田さんですよ。乞うご期待。 プロローグ 後:「先輩、いまさらなんですけど上からSQLの遅いところを調査してくれって依頼がきてて、全クエリの実行時間を実データで集計とれと言ってるんですけど。これ、SQL発行前後で時間計測するしかないですかねー。このプロジェクトどんだけクエリ発行してるところあるんだろ…。簡単にやれないですかね。とりあえず調査に1週間かかるって返答しちゃいましょうか」 先:「まぁまて。全部のクエリにもれなく時間計測のコードを挿し込むとかやってられんし、手作業で漏れも発生するだろ。こういうのはオブジェクト指向で解決するのがスマートだ。あ、とりあえず調査に1週間かかるとは返答しておけ」
「Java セキュアコーディング 並行処理編」 「Java セキュアコーディング 並行処理編」(原著 CERT/CC「Java Concurrency Guidelines」)は、カーネギーメロン大学ソフトウエア工学研究所の CERTプログラムと Oracle の共同作業の成果である「CERT Oracle Secure Coding Standard for Java」の中から、次のカテゴリに含まれる並行処理プログラミングに関連したガイドラインをまとめた資料です。 可視性とアトミック性(VNA) ロック(LCK) スレッドAPI(THI) スレッドプール(TPS) スレッドの安全性に関する雑則(TSM) セキュアな Java マルチスレッドプログラミングに取り組む際の手引きとしてご活用ください。 本資料に記述されたガイドラインを含む「CERT Oracle Secure Coding S
最近のCPUはデュアルコアは当たり前、デスクトップPCでさえクアッドコアを使用できる時代になりました。 このような時代の流れを先行するかのごとく、Javaでは当初よりスレッドを使った並行プログラミングが可能でした。とはいうものの、Threadクラスを使いこなすのはなかなか難しいというのも事実です。 そこで、J2SE 5.0では並行プログラミング用のAPIとして、Concurrency Utilitiesが導入されました。Concurrency Utilitiesには大別して次のような機能を持っています。 タスクの非同期実行機構 並行コレクション ロック、シンクロナイザ アトミック処理 Java SE 6ではConcurrency Utilitiesも強化されています。4つの機能のそれぞれが強化されているのですが、変更点はそれほど大きくありません。そこで、本連載ではタスクの非同期実行機能の変
Java: The Good Partsの本のタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く