世間ではオワコンと揶揄されることも珍しくない Java ですが、Java を初めたばかりのエンジニアがチェック例外と非チェック例外の使い分けについて「ベストプラクティスないの?」と調べたのをまとめてみました。 エントリまとめ どのエントリも Java についての深い洞察と開発の実践現場での生きた経験をもとに書かれていて大変に勉強になりました *1 エントリ中からリンクされているエントリもぜひ一読されることをおすすめします。 検査例外と非検査例外(実行時例外)をどう使い分けるか - Lino Blog Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して Javaのチェック例外はクソ仕様 - やさしいデスマーチ 例外の扱いについて その2 - じゅんいち☆かとうの技術日誌 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤
アプレットでスレッドを使う際に重要なテクニックにダブルバッファリングがあります。これは描画に時間がかかる場合に、その途中経緯が見えてしまうのを防ぐ目的で利用します。 Graphicsクラスのオブジェクトへの描画処理は記述された順に行われて行きます。その為、例えばpaintメソッドが一度呼ばれる度に多数の処理を行うような場合、ちらつきの原因になってしまいます。 簡単な例で試してみます。下記は意味もなく大量の線を描画したボックスを移動させていくだけのアプレットです。 ThreadTest6.html 画面がちらついて見えるかと思います。1回paintメソッドが呼び出された時の処理が一瞬で終わっているように見えるのですが、実際に画面をキャプチャーしてみると下記のように、線を描画している処理の経緯が見えるのが原因です。 対応策としてよく用いられているのがダブルバッファリングです。これは描画処理用の
スレッド を用いることにより、ひとつのプログラム(プロセス)の中で複数の処理の流れを走らせることができます。スレッドを作成するには、Thread のサブクラスを作成する方法と、Runnable インタフェースを実装したオブジェクトを用いる方法があります。 Thread クラスのサブクラスを作成することにより、スレッドを作成する方法を以下に示します。Thread クラスのサブクラスを定義し、そのインスタンスを生成し、start() メソッドを呼び出すことで、ThreadTestThread クラスの run() メソッドが実行されます。 class ThreadTest { public static void main(String[] args) { ThreadTestThread tt = new ThreadTestThread(); tt.start(); for (int i
プログラムを実行する際のパラメータを指定する方法は、何通りかあります。 ソースに書いておく コマンドライン引数で与える 環境変数を設定して与える 設定ファイルを用意して与える 独自形式のデータファイルを用意して与える ソースに書いておくのは、 パラメータの値が変わるごとに再コンパイルが必要になってしまうので論外です。 コマンドライン引数で与えるのが最も簡便ですが、 パラメータ自身を保存する仕組みがないという欠点があります。 プロパティファイルによる情報の外部保存 Java ではプロパティファイルという仕組みにより、 キー(key)と値(value)の組による情報をファイルに読み書きすることができます。 プロパティファイルは、「キー=値」の形式で記述されたテキストファイルです。 id=mlab url=http://www.mlab.im.dendai.ac.jp/ プロパティファイルはアプ
Jacksonでオブジェクトのシリアライザを作成してみます。 通常の ObjectMapper の設定のままだと getter に対する setter が必要だったり、ジェネリクスが扱えなかったりと色々条件があるので、ObjectMapper に次の設定を施して実施します。 全フィールド値のみ対象とする(getter/setter は対象としない) ジェネリクスに対応する為、自身の型を埋め込む @JsonIgnoreが付いていてもシリアライズ対象にする null は出力しない(データ量削減) ObjectMapper 側で色々設定する事で、オブジェクト側は特に実装の変更を必要としない点がミソです。 シリアライザ/デシリアライザソース public class JacksonSerializer { private static final ObjectMapper mapper = new
背景メソッドを実装する際、そのメソッドの実行の事前条件を満たしているか確認するため「防御的プログラミング」をする必要があります。その「防御的プログラミング」の例として、「引数のnullチェック」があります。その「引数のnullチェック」の記法についてjava7から改善されたので、その内容について記載します。 Java6以前の記法Java6以前では以下のようにif文で記載し、メッセージでエラー内容を補足します。 実装例 public class StringUtils{ /** * 指定された2つの文字列の長さの合計を返します * * @param s1 文字列 * @param s2 文字列 * @return 指定された2つの文字列の長さの合計 * * @throws NullPointerException 引数がnullの場合 */ public static long sumLen
Java 8 Stream API にテキストを流してみる(生成編)- Qiita Java 8 Stream API にテキストを流してみた(終端操作編)- Qiita Java 8 Stream API にテキストを流してみて(中間操作編)- Qiita Java 8 が出てからだいぶたつわけだが その目玉機能の一つだった Stream API は今、開発現場でどれだけ使われているのだろうか。自分も出始めたころにちょっと触って理解しきれないまま敬遠してきた一人だが、最近また使う機会があったので情報など漁っている。 しかしまだ入門的な紹介かディープな検証ばかりで、どうもピンと来ない。もし Stream が便利で広く開発現場で使われているなら、そろそろもう少し実践的な情報が上がってきていいと思うのだが。 現状、Stream をちゃんとは理解しようとするなら、やはり自分の手で具体的なコードを
概要 リストのクラス [/2020-05-29] リストの初期化 [/2018-06-02] 空リスト [2020-05-29] リストのメソッド [/2023-09-24] 順次アクセス処理 ランダムアクセス処理 配列との変換 [/2020-05-29] Streamとの変換 概要 リストは、末尾に要素を追加してゆき、先頭から順番に全要素を処理するのに適したコレクション。 同じ値(要素)を複数保持することも出来る。 リストでは要素の並び順が保証される。 →Setは値(要素)は1種類ずつしか保持できず、並び順も(基本的には)不定 。その代わり、存在有無のチェック(containsメソッド)は得意。 リストはjava.util.Listインターフェースで表される。 具象クラスとしては、java.util.ArrayListが使われることが多い。 保持する要素の型(クラス)はジェネリクスで指定
やってみよう! 自動逆コンパイル JD-Eclipseの利用方法は非常に簡単です。Eclipseのプロジェクト内のjarファイル内のクラスやクラスパス上のクラスをクリックした際に、ソースコードが存在しない場合、自動的に逆コンパイルされ、ソースコードが表示されます(図2)。 また、ソースコード中のメソッドから宣言を開いたり、コンソール中に表示されたスタックトレースをクリックしたり、デバッガ中のスレッドからクラスをクリックしても自動的に逆コンパイルできます。 Eclipse上のクラスからソースコードへジャンプする操作を行うだけで、自動的に逆コンパイルとソースコードの表示を行うので、クラスファイルであることを忘れるように自然に逆コンパイルしたソースコードを表示できます。 逆コンパイルされたソースコードは、どうなっている? JD-Eclipseを利用すると、あまりにも自然に逆コンパイルされるため、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く