Java

列挙型

Javaの列挙型enumについてやってなかったので。Java列挙型メモ(Hishidama's Java enum Memo) 列挙型を選ぶ列挙型を選ぶ。 CustomEnumとするCustomEnumとする。 CustomEnum.javaは、FIRSTからTHIRDまで。 MainClass.javaで、customEnumにCustomEnum.SECONDを…

RetentionPolicy.SOURCE

RetentionPolicy.SOURCEにすると、アノテーション情報はソースのみとなり、実行時には取得できなくなる。RetentionPolicy (Java Platform SE 6)CustomAnnotation.javaで、RetentionPolicy.SOURCEを指定。 java.lang.ArrayIndexOutOfBoundsException: 0また、…

@Retention

@Retentionで。アノテーションの生存期間を決められる。Javaアノテーションメモ(Hishidama's Java annotation Memo)独自のアノテーションは、そのままだとコンパイル時に破棄されるので、実行時にも生存しているように@Retentionの引数にRetentionPolicy.RUN…

@interface

独自にアノテーションを定義できる。Javaアノテーションメモ(Hishidama's Java annotation Memo) 新規で注釈新規で注釈。 こんな感じこんな感じ。 これが独自のアノテーションCustomAnnotationこれが独自のアノテーションCustomAnnotation。 あとは、CustomC…

Method.getDeclaredAnnotations

Method.getDeclaredAnnotationsで、そのメソッドに付けられたアノテーションを取得する。Method (Java Platform SE 8)アノテーションは複数付けられるので、本来なら複数取り出したいところだが、今回は1つ。 CustomClass.javaで、method1に、@Deprecatedを…

Method

Class.getMethodの戻り値Methodクラスは、メソッド情報を持っている。Method (Java Platform SE 8)例えば引数がいくつあるかを確認してみる。 CustomClass.javaでは、method1に引数は無いので0。 MainClass.javaで、method1.getParameterCountで引数の数を取…

Class.getMethod

指定された名前の公開型のメソッドを取得するには、Class.getMethodを使う。Class (Java Platform SE 8)CustomClass.javaで、method1を定義。 MainClass.javaで、method1を取得。 public void com.bgstation0.java.sample.CustomClass.method1()こうなった。…

Class.getField

指定された名前の公開型のフィールドを取得するには、Class.getFieldを使う。Class (Java Platform SE 8)CustomClass.javaで、val1を定義。 MainClass.javaで、存在しない場合もあるので、tryで囲む。 public int com.bgstation0.java.sample.CustomClass.va…

Class.getName

パッケージ文字列を含むクラス名を取得するには、Class.getNameを使う。Class (Java Platform SE 8)MainClass.javaは、StringとCustomClassのクラス名を取得する。 java.lang.String com.bgstation0.java.sample.CustomClassこうなる。Sample/java/java.lang…

Class.getPackage

パッケージ文字列(パッケージ名でクラス名は入らない。)を取得するには、Class.getPackageを使う。 (正確にはPackageオブジェクトを返すので文字列ではない。)Class (Java Platform SE 8) 独自クラスにパッケージ名を付ける独自クラスにパッケージ名を付ける…

Object.getClass

Classインスタンスは、Object.getClassでも取得できる。Object (Java Platform SE 8) Javaリフレクションメモ(Hishidama's Java Reflection Memo)非ジェネリクス版とジェネリクス版。 class java.lang.String class java.lang.String取得出来た。Sample/java…

Class

そのクラスのクラス情報は、Classクラスを取得することでわかる。Javaリフレクションメモ(Hishidama's Java Reflection Memo) Class (Java Platform SE 8)クラス名.classでClassインスタンスを取得できる。IntegerとStringのクラス情報を取得。 Stringの場合…

ワイルドカード

例えばListなどが返ってくるときに、Listの要素の型が関数内部の処理によって変わったりする場合がある。 型引数に'?'を指定すると、要素型が違っても受け取れる。 ワイルドカードという。Java総称型メモ(Hishidama's Java Generics Memo)MainClass.javaで、…

総称型

総称型、いわゆるジェネリクス。 Javaでやってなかったので。Java総称型メモ(Hishidama's Java Generics Memo)CustomClass.javaで、Tにどんな型でも入っていいように中の処理を書く。 MainClass.javaで、組み込み型ではなく、クラス名を指定する。 Integerの…

Thread.getName

Thread.getNameで、スレッド名を取得する。Thread (Java Platform SE 6)スレッドIDの取得からスレッド名の取得に差し替え。こちらも。 CustomThread before. [1]:Thread.currentThread.getName() = main [2]:Thread.currentThread.getName() = main [3]:Thre…

Thread.currentThread

Thread.currentThreadで、現在のスレッドの参照を取得できる。Thread (Java Platform SE 6)スレッドの内側と、スレッドの外側で、スレッドIDが違うことを確認する。run内に2箇所。生成前、生成後、実行後の3箇所。 CustomThread before. [1]:Thread.currentT…

Thread.getId

Thread.getIdで、スレッドIDを取得できる。Thread (Java Platform SE 6)CustomThreadの生成、実行、CustomThreadのrun内で、スレッドIDを取得してみる。CustomThreadの中はこれだけ。MainClassは、ctの生成と、ct.startの実行時。 CustomThread before. [1]:…

Runnable

Runnableを匿名クラスで実装する場合もある。Runnable (Java Platform SE 6)こんな感じでrunの中にThread.sleep。 CustomThread before. CustomThread after. Thread.sleep before.の3秒後に、 Thread.sleep after.が出る。Sample/java/Runnable/Runnable/sr…

Thread

Threadを新しく生成して実行する方法はいくつかあるが、今回はThreadを継承した派生クラスを作る。Thread (Java Platform SE 6)runで3秒休止。こうすると、 CustomThread before. CustomThread after. Thread.sleep before最初こうだが、3秒経つと、 Thread.…

Thread.sleep

Thread.sleepで、スレッドを休止させる。Thread (Java Platform SE 6)カレントスレッドを休止させることで、ただただ処理を3秒止める。tryで囲まなきゃいけない。 Thread.sleep beforeと出て3秒経つと、 Thread.sleep afterと出る。Sample/java/Thread/sleep…

Stream.forEach

Stream.forEachを使って、各要素に対してactionを実行できる。Stream (Java Platform SE 8)各要素の名前の出力をforEachで繰り返している。 Taro Saburo Goroこうなる。Sample/java/Stream/forEach/src/Stream at master · bg1bgst333/Sample · GitHub

Stream.toArray(generator)

toArrayの引数に、配列生成のgenerator関数の参照やラムダ式を渡すことで、指定の型の配列で受け取れる。Stream (Java Platform SE 8)xに要素数が入るので、ラムダ式の矢印の先は要素数xの配列を生成する部分になる。 これだと、Stringの配列で受け取れる。 …

Stream.toArray

配列に変換するには、toArrayを使う。Stream (Java Platform SE 8)ただし、引数なしのバージョンでは、Objectの配列にしか直接変換できない。なので拡張for文の中でStringに変換してる。 実行すると、 Taro Saburo Goroこうなる。Sample/java/Stream/toArray…

Stream.map

Streamで絞り込まれた要素のどの値を返すかは、mapで指定する。Stream (Java Platform SE 8)こちらでも、170以上のボディの年齢を返す。とすると、 30 25 17となる。Sample/java/Stream/map/src/Stream at master · bg1bgst333/Sample · GitHub

Stream.filter

Streamで条件を絞り込むには、filterを使う。Stream (Java Platform SE 8)bodies.stream.filterで170以上を指定。 こちらはforの中でBodyにキャストして、各値を出力。 Taro, 30, 170, 60 Saburo, 25, 180, 70 Goro, 17, 175, 65このように出力できた。Sampl…

Stream

Stream APIにおける集約操作の対象となるのがStreamインターフェース。Stream (Java Platform SE 8)いったんStreamインターフェースに入れてみた。 条件は173を超えるに変更。 Saburo Goroこのようになった。Sample/java/Stream/Stream/src/Stream at master…

Collection.stream

Streamを取得する方法はいくつかあるが、手っ取り早いのはCollection.streamで取得すること。Collection (Java Platform SE 8)今回は、Listを継承元のCollectionに替える。当然Collectionからもstreamメソッドが呼べる。 条件も170未満に替えてみる。 Jiro S…

Stream API

Java 8からStream APIが導入された。 C#のLINQと同様に、データの流れを集約したり操作したりできる。Java Streamメモ(Hishidama's Java8 Stream Memo)LINQの項で扱った身長と体重に関する操作を、Java Stream APIでもやってみる。Body.csは、このようなBody…

Collection

ArrayListやLinkedListが継承するList、HashSetやTreeSetが継承するSetなど、コレクションはCollectionインターフェースを継承している。Collection (Java Platform SE 6)なので、Collectionにインスタンスを入れることが出来る。 aaa 1.2 10 abc 100 1.5 BB…

Set

HashSetも、TreeSetも、Setを継承しているので、SetにまとめられるSet (Java Platform SE 6)で、 1.2 ABC 10 10 20 30 aaa ccc bbb AAA BBB CCCHashSetの場合はソートされないが、TreeSetの場合はソートされる。Sample/java/Set/Set/src/Set at master · bg1…