Java
Scanner.hasNextIntで、入力データがintかどうか判定する。Scanner (Java Platform SE 8)今回は、Windows10でVSCodeでやる。 VSCodeはすでに最新版が入ってる。 Open Folderでフォルダを開く。Open Folderで、ワークスペースフォルダを開く。 Ctrl + Shift +…
Scanner.hasNextで、入力データが残っているか判定する。Scanner (Java Platform SE 8)今回は、Windows10にEclipseというよりPleiadesを入れる。 わかりにくいけど、Full EditionのJavaを押す。Full EditionのJavaを押す。 もうzipではなく自己解凍exeもうzi…
Scanner.nextLineは、改行で区切るので、スペースを含めることが出来る。Scanner (Java Platform SE 8)今回は、Windows10にopenjdkを入れて適当なテキストエディタでやってみる。Archived OpenJDK GA Releasesここから、openjdk-21.0.2_windows-x64_bin.zip…
Scanner.nextIntは、読み込んだ整数値を返す。Scanner (Java Platform SE 8)今回は、Fedora41上にVisual Studio Codeを入れる。 sudo rpm --import https://packages.microsoft.com/keys/microsoft.ascsudo sh -c 'echo -e "[code]\n\ name=Visual Studio Co…
Scanner.nextは、入力文字列を区切り文字(デフォルトは空白文字)まで読み込んで文字列として戻り値で返す。Scanner (Java Platform SE 8)今回は、Fedora41上にEclipseを入れる。 Eclipse公式(https://www.eclipse.org/downloads/)から、Eclipse IDE for Java…
Scannerは、入力した値や文字列を読み込むテキストスキャナとして使う。Scanner (Java Platform SE 8) Java | キーボードから入力された値を取得する(Scanner.next,Scanner.nextLine)Java1.5からあったのか。 知らなかった。 ひさびさのJavaなので環境構築か…
配列にはlengthフィールドがあり、要素数が格納されている。Chapter 10. Arrays (Javaの一般的なクラスではないので、ここに説明がある。)MainClass.javaで、とすると、 aryNumbers.lengthは5なので、0から4までの5回繰り返す。aryNumbers.lengthは5なので、…
URIは、URIを扱うクラス。URI (Java Platform SE 6)URIは、URLの上位概念だけど、基本的に同じ使い方。で、 こんな感じでホスト名だけ取れるこんな感じでホスト名だけ取れる。Sample/java/URI/URI/src/URI at master · bg1bgst333/Sample · GitHub
Javaの列挙型enumについてやってなかったので。Java列挙型メモ(Hishidama's Java enum Memo) 列挙型を選ぶ列挙型を選ぶ。 CustomEnumとするCustomEnumとする。 CustomEnum.javaは、FIRSTからTHIRDまで。 MainClass.javaで、customEnumにCustomEnum.SECONDを…
RetentionPolicy.SOURCEにすると、アノテーション情報はソースのみとなり、実行時には取得できなくなる。RetentionPolicy (Java Platform SE 6)CustomAnnotation.javaで、RetentionPolicy.SOURCEを指定。 java.lang.ArrayIndexOutOfBoundsException: 0また、…
@Retentionで。アノテーションの生存期間を決められる。Javaアノテーションメモ(Hishidama's Java annotation Memo)独自のアノテーションは、そのままだとコンパイル時に破棄されるので、実行時にも生存しているように@Retentionの引数にRetentionPolicy.RUN…
独自にアノテーションを定義できる。Javaアノテーションメモ(Hishidama's Java annotation Memo) 新規で注釈新規で注釈。 こんな感じこんな感じ。 これが独自のアノテーションCustomAnnotationこれが独自のアノテーションCustomAnnotation。 あとは、CustomC…
Method.getDeclaredAnnotationsで、そのメソッドに付けられたアノテーションを取得する。Method (Java Platform SE 8)アノテーションは複数付けられるので、本来なら複数取り出したいところだが、今回は1つ。 CustomClass.javaで、method1に、@Deprecatedを…
Class.getMethodの戻り値Methodクラスは、メソッド情報を持っている。Method (Java Platform SE 8)例えば引数がいくつあるかを確認してみる。 CustomClass.javaでは、method1に引数は無いので0。 MainClass.javaで、method1.getParameterCountで引数の数を取…
指定された名前の公開型のメソッドを取得するには、Class.getMethodを使う。Class (Java Platform SE 8)CustomClass.javaで、method1を定義。 MainClass.javaで、method1を取得。 public void com.bgstation0.java.sample.CustomClass.method1()こうなった。…
指定された名前の公開型のフィールドを取得するには、Class.getFieldを使う。Class (Java Platform SE 8)CustomClass.javaで、val1を定義。 MainClass.javaで、存在しない場合もあるので、tryで囲む。 public int com.bgstation0.java.sample.CustomClass.va…
パッケージ文字列を含むクラス名を取得するには、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を使う。 (正確にはPackageオブジェクトを返すので文字列ではない。)Class (Java Platform SE 8) 独自クラスにパッケージ名を付ける独自クラスにパッケージ名を付ける…
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クラスを取得することでわかる。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 (Java Platform SE 6)スレッドIDの取得からスレッド名の取得に差し替え。こちらも。 CustomThread before. [1]:Thread.currentThread.getName() = main [2]:Thread.currentThread.getName() = main [3]:Thre…
Thread.currentThreadで、現在のスレッドの参照を取得できる。Thread (Java Platform SE 6)スレッドの内側と、スレッドの外側で、スレッドIDが違うことを確認する。run内に2箇所。生成前、生成後、実行後の3箇所。 CustomThread before. [1]:Thread.currentT…
Thread.getIdで、スレッドIDを取得できる。Thread (Java Platform SE 6)CustomThreadの生成、実行、CustomThreadのrun内で、スレッドIDを取得してみる。CustomThreadの中はこれだけ。MainClassは、ctの生成と、ct.startの実行時。 CustomThread before. [1]:…
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 (Java Platform SE 6)runで3秒休止。こうすると、 CustomThread before. CustomThread after. Thread.sleep before最初こうだが、3秒経つと、 Thread.…
Thread.sleepで、スレッドを休止させる。Thread (Java Platform SE 6)カレントスレッドを休止させることで、ただただ処理を3秒止める。tryで囲まなきゃいけない。 Thread.sleep beforeと出て3秒経つと、 Thread.sleep afterと出る。Sample/java/Thread/sleep…
Stream.forEachを使って、各要素に対してactionを実行できる。Stream (Java Platform SE 8)各要素の名前の出力をforEachで繰り返している。 Taro Saburo Goroこうなる。Sample/java/Stream/forEach/src/Stream at master · bg1bgst333/Sample · GitHub
toArrayの引数に、配列生成のgenerator関数の参照やラムダ式を渡すことで、指定の型の配列で受け取れる。Stream (Java Platform SE 8)xに要素数が入るので、ラムダ式の矢印の先は要素数xの配列を生成する部分になる。 これだと、Stringの配列で受け取れる。 …