タグ

javaに関するKshi_Kshiのブックマーク (106)

  • JSONICの使い方

    最近は、JSON形式のデータを熱かったアプリを作ろうと考えているので、 JSONICについて調べてみました。 JSONICっていうのは簡単にいうと、JavaでJSON形式のデータを扱うためのライブラリです。 ダウンロードはこちらから↓ JSONIC 使い方はいたって簡単。 // JSONICをインポート import net.arnx.jsonic.JSON; public class JsonicSample { public static void main(String[] args) { final JsonicSample jsonicSample = new JsonicSample(); jsonicSample.go(); public void go() { // エンコード(Java → JSON)対象のクラス final Hoge hoge = new Hoge();

  • Javaの例外処理で知らないと損する7つのテクニック

    Javaの例外処理で知らないと損する7つのテクニック:【改訂版】Eclipseではじめるプログラミング(24)(1/3 ページ) これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipseとJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります(この回と前回のみ、別連載「EclipseでJavaに強くなる」の改訂版です。今回は第4回Javaの例外のテクニックを知る」の改訂版です) 前回の「プログラマの宿命! 例外とエラー処理を理解する」では、Javaにおける例外の用途と基的なコードの書き方、例外が発生するさまざまなケースについて理解しました。 今回は、独自に例外を定義する方法や、ちょっとした例外のテクニックを紹介します。 【1】Eclipseで独自の

    Javaの例外処理で知らないと損する7つのテクニック
  • Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して

    Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型はエントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない

    Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して
  • リフレクションによるクラスのメンバーへのアクセスについて - M12i.

    佳境を(ちょっと残念なかたちで)迎えている現在の職場ですが、SpringやStrutsといういずれにせよリフレクションAPIの利用を基礎にしたフレームワークを使用するなかで、知ることになった事実についてメモ。 Javaのリフレクションの一番わかりやすい形態は、任意のクラスのメンバー(メソッド、フィールド、そしてコンストラクタ)への実行時解決型アクセスでしょう。 このうちメソッドとフィールドについては、任意のクラスについて名前(とメソッドの場合は引数型も)を指定してメソッドへアクセスする方法と、そのクラスのメソッドもしくはフィールドすべてを格納した配列を取得してアクセスする方法とがあります。 重要なことはさらにこれらの2種類のAPIには、 そのクラスが継承・実装により備えているpublicなメソッドを返すものと、 そのクラスがまさに自分自身で宣言しているメソッドをアクセスレベルに関係なく返す

    リフレクションによるクラスのメンバーへのアクセスについて - M12i.
    Kshi_Kshi
    Kshi_Kshi 2013/06/02
    リフレクションの話 declaredMethod/Field() はそのクラスで宣言したメソッド、フィールドを取得するので、継承元の情報は取得できない。
  • ワイルドカード<?>と型パラメータ<T>の違いがすっきりしない。

    ワイルドカード<?>と型パラメータ<T>の違いがすっきりしない。 現在、Javaを勉強中の初心者です。一応、Cの心得はあります。 とりあえず、SJC-P資格の取得を目的として勉強していますが、どうも<?>のワイルドカードがすっきりと理解できません。というのも、Generics表記である<T>との違いが明確に区別できずにいるからです。 例えば、下のサンプルプログラムを例として、<T>と<?>の使い分けは、どのように頭を整理すればよいのでしょうか? Java初心者ゆえ、できるだけ難しい言葉は使わずに教えていただけると幸いです。 ---------------------------------------------------- class WildCardSample1<T>{ private T type; public WildCardSample1(T type){ this.typ

    ワイルドカード<?>と型パラメータ<T>の違いがすっきりしない。
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • Java総称型メモ(Hishidama's Java Generics Memo)

    メソッドの総称型 メソッドのみに総称型を適用した定義を行うことも出来る。[2007-06-12] 戻り値の型の直前に「<仮型引数, 仮型引数…>」を置くだけ。後はクラスの場合と同様。 public static <T> T notNull(T arg1, T arg2) { T ret; if (arg1 != null) { ret = arg1; } else { ret = arg2; } return ret; } このメソッドを呼び出す側は、クラスの場合とは異なり、明示的に型引数を指定する必要は無い。 指定した引数の値に応じて、自動的に型が判断される。 String s = notNull("abc", "def"); //型引数はString Long l = notNull(new Long(1), new Long(2)); //型引数はLong int i = notNu

    Kshi_Kshi
    Kshi_Kshi 2013/05/30
    generic の解説
  • いまさら聞けない「Javadoc」と「アノテーション」入門

    いまさら聞けない「Javadoc」と「アノテーション」入門:【改訂版】Eclipseではじめるプログラミング(22)(1/4 ページ) これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipseとJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります 注釈とコメントで開発しやすくしよう 開発者がソースコードにコメントを自由に記述すると、統一性がなくなり、同じ内容をさまざまな表現で書いてしまいます。これを防ぎ、重要な情報について統一的な表現で記述したいときは、「アノテーション(annotation、注釈)」を使うことを検討してみましょう。 Javaではアノテーションをプログラムのソースコードへプログラムのメタデータとして記述できます。また、プログラムにア

    いまさら聞けない「Javadoc」と「アノテーション」入門
  • Javaアノテーションメモ(Hishidama's Java annotation Memo)

    それぞれの指定の意味する場所は、以下のようになっている。 @LocationExampleAnnotation //TYPE:クラス定義やインターフェース定義をする場所 public class アノテーションを付けるサンプル { @LocationExampleAnnotation //FIELD:フィールド(メンバー変数)定義 protected int value; @LocationExampleAnnotation //CONSTRUCTOR:コンストラクター定義 public アノテーションを付けるサンプル() { } @LocationExampleAnnotation //METHOD:メソッド定義 public void メソッド() { } public int 引数ありメソッド( @LocationExampleAnnotation //PARAMETER:パラメータ

    Kshi_Kshi
    Kshi_Kshi 2013/05/30
    hishidamaさんありがとう
  • JSPリファレンス(EL式:javaのstaticメソッド呼び出し)

    JSP内のEL式から、javaのstaticメソッドを呼び出すことができます。 これにより、カスタムタグを使うような感覚で手軽に、javaクラスのstaticメソッドをJSPから呼び出すことができるので、JSPの記述を非常にシンプルにすることができます。 staticメソッドを呼び出には以下の流れで、準備をします。 (1)javaのstaticメソッドを実装する。 (2)tldファイルにstaticメソッドの定義をする (3)web.xmlにtldファイルの設定をする (4)EL式から、staticメソッドを呼び出す。 ※javaクラスのinstanceメソッドは実行できません。 ●実装例 (1) javaクラスのstaticメソッドを作成(smp.CurrencyFormat.java) ・引数で受け取った数値をカンマ(,)編集します。 ・数値が0以下の場合は、<font>タグを使って赤

    Kshi_Kshi
    Kshi_Kshi 2013/05/16
    オリジナルタグの追加
  • EL access a map value by Integer key

    Kshi_Kshi
    Kshi_Kshi 2013/05/15
    jstl でマップを表示するとき
  • Java 8を関数型っぽく使うためのおまじない - きしだのHatena

    やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで、短く書けるおまじない考えてみました。 Function型 さて、まずはJava 8で標準で入ったFunction型をみてみましょう。パッケージ名まで含めるとjava.util.funciton.Functionです。 こんな感じで使います。 Function<String, String> enclose = s -> "[" + s + "]"; Genericsでの型指定の最初が引数、あとが戻り値の型です。ここではStringをとってStringを返す関数としてencloseを定義しています。 これを呼び出そうとすると、こんな感じ

    Java 8を関数型っぽく使うためのおまじない - きしだのHatena
  • 『Chain of Responsibilityパターン』

    こんにちは.はまじです. 今回からデザインパターンシリーズということで,各回1つずつ(2つもあるかも)デザインパターンをご紹介していきます. Chain of Responsibility パターン Chain of Responsibility パターンは,いわゆる「責任のたらい回し」です. 自分自身の手に負えないものは別のやつに任せよう,という感じです. 普通やってしまいそうな,大元のクラスのメソッドのなかで if文を山のように書くというクソみたいな方法が,このパターンを適応するとすごいシンプルになります. 最近ポーカーの役判定プログラムを書いていましたが,複合役のないポーカーではまさにうってつけのパターンだと言えます. 試しにパターン適応前のコードの例をお見せします. public int getMatchedPokerHand(Player player) { Hand hand

    『Chain of Responsibilityパターン』
    Kshi_Kshi
    Kshi_Kshi 2013/04/28
    Chain of Responsibility
  • EclipseTotale - Sysdeo Tomcat Launcher Plugin

    Plugin features Starting and stopping Tomcat 4.x, 5.x, 6.x, 7.x Registering Tomcat process to Eclipse debugger Creating a WAR project (wizard can update server.xml file) Adding Java Projects to Tomcat classpath Setting Tomcat JVM parameters, classpath and bootclasspath Exporting a Tomcat project to a WAR File Capability to use a custom Tomcat classloader to load classes in several java projects at

  • 「null」をフラグとして使うのは、やめた方がいい - 地平線に行く

    null をフラグとして使うのは、やめた方がいいと思います。 null は、ただ変数が初期化されていないことを表しているだけです。 この意味以外で、null を使わない方がいいと思います。 null をフラグとして使う 「null をフラグとして使う」というのは、「null なら xxxx」というように、null が何らかの意味を持って使われていることを指します。 例えば、下記のコードでは「null はゲストユーザを指すフラグ」として使われています。 /** * ユーザ用のヘッダを作る処理 */ public String createHeader(User user){ (…中略…) String name; if(user != null){ name = user.getName(); }else{ name = "Guest"; // null ならゲストユーザ } 問題点 これの

    「null」をフラグとして使うのは、やめた方がいい - 地平線に行く
  • 文字列処理と入力チェック

    (1)文字列の置換処理 前回までで、共有ブックマークの基的な機能は一通りそろいました。これで、問題なくサービス開始、としたいところですが、その前に行うべき処理があります。 これまではユーザが入力した文字列のチェックを行わずに、そのままHTML文への出力 やSQL文の作成に使用していました。これまでの例で使用した文字列にはたまたま<や>、シングルクオート“'”が含まれていませんでしたが、もしユーザーがこれらの文字列を含む内容を登録したいと考えた場合、ページのデザインが崩れたり、SQL文の実行でエラーが出たりしてしまいます。また、ユーザーが悪意を持っていた場合に は、データの改ざんや破壊などを目的とした文字列がパラメータとして渡されることも考えられます。これらは、重大なセキュリティーホールであるため、特にパラメー タとして渡される値の扱いには注意が必要です。 そこで、入力された文字列を適切に

    文字列処理と入力チェック
  • Javaリフレクションメモ(Hishidama's Java Reflection Memo)

    Javaでは、クラス生成やメソッド呼び出しをソース上に直接書いてコンパイル時に決定されるだけでなく、文字列(クラス名)を使ってクラスを生成したり、 メソッド名の文字列を使ってメソッドを呼び出したりすることが出来る。 クラス(インスタンス)生成 [/2015-04-26] Classのメソッド [/2021-03-21] instanceof [2007-02-16] Classからのインスタンス生成(非推奨) [/2018-04-30] インスタンス生成 [/2013-08-06] 総称型による限定 [2007-05-02] 内部クラスのインスタンス生成 [/2008-02-10] メソッド呼び出し staticメソッド実行 [/2017-07-23] メソッド実行(引数なし) [/2017-07-23] メソッド実行(引数あり) [/2017-07-23] 可変引数メソッド [/2015

  • Java 5 HTML escaping To Prevent XSS

    Kshi_Kshi
    Kshi_Kshi 2013/04/16
    fn:escapeXml
  • クラスのインスタンスを1つに保つ(Singletonパターン)

    サーブレットのようなマルチスレッド環境下で共有リソースを扱うとき、複数のスレッド間で単一のオブジェクトを操作するようなプログラムが必要になることがあります。また、マルチスレッド環境以外でも、プログラム全体の情報を共有するオブジェクトや、生成に非常にコストが掛かるものの使い回しが利くオブジェクトのように、プログラム全体で1つのインスタンスだけを扱いたいこともあります。 小規模なプログラムなら、インスタンスを1つしか作らないという暗黙の規則を作り、注意深くコーディングすれば対応することはできるでしょう。しかし、プログラムの規模が大きくなってくると、そのような暗黙の規則だけではいずれ破たんしてしまいます。もともと1つだけのインスタンスを扱うように作られたクラスが、いつの間にか複数のインスタンスで扱われていたりすると、バグを引き起こす原因になります。 このような問題の解決には、クラスのstatic

    クラスのインスタンスを1つに保つ(Singletonパターン)
  • Java: PreparedStatement で like を扱う時の注意点 - toyfish.blog

    JDBC には PreparedStatement クラスが用意されていて、SQL 文の一部をパラメータ化することができる。 パラメータ部分のエスケープ処理は JDBC ドライバが行ってくれるので、SQL インジェクション対策として最近では必須になりつつあるこのクラス。しかし、like 演算子を使う場合は、ちょっと注意が必要だ。 Lv 1 ネットで検索してみると、失敗例としてひっかかってくるのがこのパターン。 Statement stmt = conn.prepareStatement("select * from items where name like '?%'"); stmt.setString(1, "hatena"); ResultSet rs = stmt.executeQuery();name が "hatena" で始まる行を選択しようとしているわけだけど、これだと例外が

    Java: PreparedStatement で like を扱う時の注意点 - toyfish.blog
    Kshi_Kshi
    Kshi_Kshi 2013/04/12
    SreparedStatementのLikeの部分は ?だけもしくは、エスケープして使用するのが良いらしい。