Javaは言語仕様上の制約により、ボイラープレートコード(自明だが省略できないお決まりのコード断片)がいくつかあります。例えば、メンバ変数を読み書きするだけのgetterメソッドやsetterメソッドがこれにあたります。Lombokを使えば、これらJava特有の冗長なコードを、見やすく簡潔なものにすることができます。本記事ではLombokを利用して、ボイラープレートコードをシンプルに記述する方法について解説します。 はじめに 今やJava開発に必要不可欠となったものの一つに、IDEの存在があります。例えばEclipseではメンバ変数さえ定義すれば、getter/setterの自動生成や、equalsメソッドやhashCodeメソッド、toStringメソッドなどの自動生成などさまざまな場面でコーディングを強力にサポートしてくれます。 これは大変便利な機能ですが、裏を返せばJavaの言語仕様
[BOF-4554]From Annotations to Unit Test Code Generation Hibernate Validatorのアノテーションから、JUnitのテストケースを自動生成するBOF。 結論として、もし「Funniest Session」を選ぶなら、これを選びたいっていうぐらい おかしかったセッション。 話を聞きながら、そもそも、バリデータのアノテーションを元にして テストケースを自動生成することに、どれだけ意味があるのかな・・・と思っていたら 次々と席を立ってオーディエンス。みんな僕と同じことを思ったのかな。 一気に10人ぐらい席を立ったこともあった。 そんな疑問を意に介さず、発表者はデモなど交えながら、発表を終えた。 Q&Aでも「ビジネスロジックのテストは自動生成できるのか? → それは出来ない」とか 「自動生成後にアノテーションを修正したらどうするの
既報の通り、ついにエンタープライズJavaの次期バージョンであるJava EE 6の仕様策定がJSR 313としてスタートした。本連載でも時期を見てJSR 313やそこに含まれるコンポーネントJSRの詳細を取り上げていく予定だが、エンタープライズ分野に携わる開発者はjcp.orgなどで公表される情報に目を光らせておくといいだろう。 さて、今回もJava SE 7に導入が予定されているAPIを紹介する。Java SE 7への導入が検討されているAPIにはアノテーションを活用したものも少なくない。本来ならば複雑な設定を必要とするような機能も、アノテーションを利用することで容易に利用できるようになるため、この流れは必然と言えるかもしれない。今回はそんなアノテーションを活用したAPIのひとつである「JSR 303: Bean Validator」を取り上げる。 JSR 303はJava Beanオ
11. 初期のEJBでHelloWorldを作ると①リモートコンポーネントインターフェースを定義する決まった親インターフェースを継承public interface Hello extends EJBObject { String sayHello(String name) throws RemoteException; }全メソッドでRemoteException送出を宣言 12. ②ホームインターフェースを定義する決まった親インターフェースを継承public interface HelloHome extends EJBHome { Hello create() throws CreateException, RemoteException; }業務と無関係な例外送出を宣言 13. ③EJB実装クラスを定義する実装するのはHelloではない!public class HelloBean
はじめに 既存のプロジェクトをインポートしたら@Overrideを使用している箇所でもの凄い怒られた。「型 ○○ のメソッド ×× はスーパークラスのメソッドをオーバーライドする必要があります」って...してるじゃないかと jdkのバージョンによって@Overrideアノテーションの仕様が違うらしい 調べてみたらこれがわかったので、プロジェクト設定からJavaコンパイラの項目を調べてみると、コンパイラー準拠レベルが1.5になっていました...これを1.6に変更、エラーが消えてくれました。Eclipseの設定としては1.6になってたので私は問題なかったですが、こちらも確認しておくとよいかなと ちなみに 中には@Overrideを消すとかいうなんともいえない対応方法もネットに転がってたので気をつけたほうがいいですね
「Wikitude」。スマートフォンを通して見た風景上に、その場所に関する情報がオーバーレイされる 拡張現実(かくちょうげんじつ、英: augmented reality、オーグメンテッド・リアリティ、AR)とは、現実世界に仮想世界を重ね合わせて表示する技術を指す言葉[1][2]。エクステンデッド・リアリティ(XR)と呼ばれる先端技術の一つである[3]。 現実の風景の中にCGでつくられた3D映像やキャラクターなどのデジタルコンテンツやデータを重ねて表示することで現実世界を"拡張"する[4][5]。専用のヘッドマウントディスプレイ(以下、HMD)を用いる方法、あるいはスマートフォンのカメラとディスプレイを使って重ね合わせる方法などがある[1]。 拡張現実(AR)とはその名の通り、「現実を拡張する」ものであり、肉眼で直接見ることができる現実の世界に重ねて、本来その現実空間に存在しない情報を表示
2005.12.12 株式会社四次元データ CTO 畠中晃弘 Java言語機能(JDK5.0(Tiger)新機能) 7章 アノテーション 7.1. 標準アノテーション型 7.2. アノテーションの定義 7.3. 標準メタアノテーション型 J2SE5.0 ではプログラムの動作に影響を与えないアノテーション(注釈)を付加することができます。アノテーションがコメントと異なるのは、プログラムからアノテーションを読み取って処理したりできる点や、アノテーションがコンパイラの動作に影響を与える点などです。(javadoc はここで説明するアノテーションではありませんが)アノテーションと javadoc コメントは似ています。実際、アノテーションは javadoc が持っていた機能を一部持っていますし、将来的に javadoc がアノテーションに置き換えられる可能性もあります。 7.1. 標準アノテーショ
Struts1時代からある、入力チェックコンポーネントです。 使い方は一緒ですが、Struts2はアノテーションで宣言できるので、それも使いましょう。 CustomValidatorとは Struts2で搭載されているValidatorは、Struts1時代とその機能は変えていません。 というわけで、既存Validatorの機能では単一項目ずつのチェックしかできません。 必須チェック、フォーマットチェック、レンジチェック、メールアドレス、URL、正規表現によるチェック、 そしてカスタムバリデータ。 カスタムバリデータは読んで字の如く、複雑な条件をカスタマイズして、Validationと同じ扱いにしてくれるものです。 Struts2のカスタムバリデータは、ActionSupportクラスが簡単なメソッドを提供しているので 楽に処理を追記することができます CustomValid
てきとーなんで信用しないでください。アトリビュートについて、調べてみました。 暇ができたら、perldoc attributesでも訳します。 アトリビュートというのは、 sub index : Private{ ... }というように、サブルーチンの横にくっついている、: の横のもの、 上の例では、Privateになります。 Catalystでよく使われているのですが、Catalystでは、Private とか、Global とか、Regexとか色々あります。 何もしない状態だと、組み込みのアトリビュート以外のものを使うと、エラーになってしまいます。 組み込みのアトリビュートというのは、lvalue、method、locked などなど。 で、どうやったら、Catalystみたいなのできるのかなぁ、と調べてみました。 ちなみに、ここに書いているのは、package-specifiedなア
PerlのAttributeについてのお勉強 このエントリの内容は結構適当です。 今更ですがCatalystなどで使われているattributeに興味を持ったので調べてみた。 やや日本人向けははてな勉強会の資料などにもあります。 今回は、関数のattributeについて。SCALARとかARRAYとかHASHはスルーです。 あと、モジュールなperlではやってません。超シンプルです。 今のPerlでは sub foo : baz {}のように記述出来ますが、通常ではエラーになってしまうのです。 デフォルトで対応しているattributesは(lvalue|method|locked|unique|shared)のみらしいので、bazは対応してないのでエラーが出ます。 perldocを見るとMODIFY_CODE_ATTRIBUTESって関数でattributesの処理をしているそうなので、
アノテーションのアノテーション アノテーションを読み込んでクラスやフィールドなどの情報を管理するという手法が可能になりますが、そのためにメタアノテーションを知る必要があります。 メタアノテーションとは、単純にアノテーションに指定するアノテーションです。 例えば、デフォルトでアノテーションは、クラスやフィールド、メソッドやコンストラクタなど、アノテーションが指定できるあらゆる宣言に記述可能です。 しかし、アノテーションの目的によってはクラスだけに指定して意味のあるものや、メソッドだけに指定して意味のあるものが存在します。 例として、メタアノテーションはアノテーションに指定するためのアノテーションであり、メタアノテーションをクラスに指定することに意味はありません。 こうした問題を解決するための、アノテーションの振る舞いや制限を指定するのがメタアノテーションなのです。 メタアノテーションには、コ
それぞれの指定の意味する場所は、以下のようになっている。 @LocationExampleAnnotation //TYPE:クラス定義やインターフェース定義をする場所 public class アノテーションを付けるサンプル { @LocationExampleAnnotation //FIELD:フィールド(メンバー変数)定義 protected int value; @LocationExampleAnnotation //CONSTRUCTOR:コンストラクター定義 public アノテーションを付けるサンプル() { } @LocationExampleAnnotation //METHOD:メソッド定義 public void メソッド() { } public int 引数ありメソッド( @LocationExampleAnnotation //PARAMETER:パラメータ
関数アノテーションとは 関数アノテーションとは関数の引数と戻り値に付加情報をつける機能です。PEP 3107 -- Function Annotationsで定義されていて、Python 2.6へbackportされていないので、利用するにはPython 3.0以降が必要になります。 まずは、インタラクティブシェルで関数アノテーションの例を見てみましょう。 >>> def foo(a: "a argument", b: int) -> ["return", "value"]: ... return a+b ... >>> help(foo) Help on function foo in module __main__: foo(a: 'a argument', b: int) -> ['return', 'value'] >>> foo.__annotations__ {'a': 'a
Java アノテーションでお聞きします。 @SuppressWarnings("unused") を指定すると 非参照データの コンパイラーの警告を消してくれて非常に助かるので よく使っています。 できれば "unused" 以外にも使えそうなオプションがありそうなのですが JDK Documentをみても @SuppressWarnings については ほんのさわりの説明しかみつかりません。 何処をみたらいいのでしょうか? また アノテーション機能は 他の言語のマクロ機能かなと 思っていたら コンパイル時、クラスロード時、実行時に 様々な仕掛けができる とんでもないスグレモノのようですが、 インターネットの情報は今イチわかりません。また 書籍も 見つかりません。 例えば デバッグ用のトレースを自動的に メソッドの入り口/出口で出力する、特定データが変更されるたびに 印刷出力する と言った
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く