ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Java

匿名メソッド

プログラミングC# p315Javaでいう匿名クラスみたいなものか? using System; class FunctionPointer { public delegate int twoitem(int a, int b); public static int add(int a, int b) { return a + b; } public static int sub(int a, int b) { return a…

デリゲート

プログラミングC# p28612章から「デリゲートとイベント」ということで、C#のウリの一つ(?)であるデリゲートの説明になるわけですが、のっけから、 例えば州知事が亡くなった場合、 とか不吉な出だしになってます。 イベント処理で使うのだということはなんと…

文字列の分割

プログラミングC# p248String#Splitを使って、HTTPヘッダをフィールド名と値に分けます。 using System; using System.IO; class ReadHeader { static void Main(string[] args) { FileInfo file = new FileInfo("header.txt"); using(StreamReader sr = fil…

IComparableとIComparer(オブジェクトのソートにまつわる話)

プログラミングC# p218IComparableとIComparerを使ってオブジェクトの比較方法を定義し、ソート順を決められます。 再びRectangleクラス。xの持つ値順に並び替えられるようにしてみます。 using System; using System.Collections; using System.Collections…

IEnumerable(オブジェクトをforeachできるようにする)

プログラミングC# p207さっきのRectangleをEnumerableにしてみる。 順番にxとyを返すというもの。 using System; using System.Collections; using System.Collections.Generic; class Rectangle : IEnumerable { private int x; private int y; public Rect…

paramsキーワード(可変長パラメータ)

プログラミングC# p184パラメータをいくつ渡してもよいメソッドを作るためのキーワード。 呼び側はパラメータ数を任意の個数設定でき、受け側は設定された個数の配列で受け取れるという仕組み。 C言語でいうprintfみたいなのを実現するために使う。で、とり…

System.Array#BinarySearchとSystem.Array#IndexOfの違い

プログラミングC# p178 Binary Searchはソートされていないと使えないが、Index Ofはソートされていなくても使える。 オーダは、Binary Searchは件数のlog2に比例、Index Ofは件数に比例(だと思う)、のため、件数が多いほどBinary Searchの方が速くなる傾向…

入れ子になったクラス

プログラミングC# p122Javaでいうところの内部クラス。 内部クラスの内部クラスとか出来るのか試してみた。 using System; class Test { private class Inner { public class InnerInner { public void hello() { Console.WriteLine("Test.Inner.InnerInner#…

readonlyフィールド

プログラミングC# p100最初の一回だけ代入可能なフィールドのことらしい。 using System; class RDOnly { public static readonly int a; static RDOnly() { a = 12; } static void Main(string[] args) { Console.WriteLine("RDOnly.a = {0}", RDOnly.a); R…

staticクラス

プログラミングC# p82C#では、インスタンス化できないクラス(staticクラス)を作成できます。 using System; static class StaticClass { static void main(string[] args) { StaticClass sc = new StaticClass(); } static void sMethod() { Console.WriteLi…

オブジェクトの浅いコピー

プログラミングC# p78C#では、インタフェースICloneableを実装して、Cloneメソッド中でMemberwiseCloneメソッドを呼べば浅いコピーが出来ると記述してあります。 class SomeType : ICloneable { public Object Clone() { return MemberwiseClone(); } } Java…

インデント深い(名前空間の話)

プログラミングC#中のサンプルプログラムは、ひたすらnamespace宣言が付いている。 これが恐らく一般的なのだろうが、namespaceだけで1インデント行かれると、さらにclass、Mainでそれぞれ1インデントずつ下がるため、プログラムの中身は4段目から始まること…

親クラスのメソッドをサブクラスで上書きしたらどうなるか。

どうなるか@Java public class Override { public static void main(String[] args) { MyTest mt = new YourTest(); mt.hello(); } } class Test { public void hello() { System.out.println("Test#hello()"); } } class MyTest extends Test { public voi…

同一シグネチャのメソッドを持った別々のインタフェースを実装するとどうなるか

プログラミングC# 第四版 p166タイトルからして分かりづらいですが、要はJavaでいうところのこういうことです。 同じシグネチャ(public void func())を持った 別々のインタフェース(IFunc1とIFunc2)を 実装したクラス(FuncImpl)はどうなるか。 ということで…

Java6で和暦

Java6では和暦サポートされてますが、これ日本人が実装してるんですね。 java.util.JapaneseImperialCalendar.javaのソースを見ると、 @author Masayoshi Okutsu 燦然と輝いてます。カッコイイ! 日付見ると、去年の今頃のようです。 使い方は、 http://blog…

instanceofがtrueになる条件

粘着系なので、未だJava逆引きクイックリファレンスの正誤表を成長させてます。 で、今回は、instanceofの説明で、 a instanceof b aがbと同じクラスかbのサブクラスである場合にtrueを返す と記述してあり、いやいやinterfaceもあるでしょう!とか思って、…

動的にクラスを生成

RubyではStructクラスを使うと、データを格納するだけのクラスを作成できるそうです。 # Personクラスを定義 Person = Struct.new("Person", "name", "address", "tel") taro = Person.new("Taro", "Tokyo", "03-3xxx-xxxx") hanako = Person.new("Hanako", …

Javaでmapメソッド(改良)

前回のはint型の配列にしか対応してなかったので、全型に対応できるようにしてみた。 前回の: http://d.hatena.ne.jp/taka_2/20071220#p1さすがにjava.lang.reflect.Methodはないだろうと思い、interfaceを定義してそれを実装することでmapメソッド中の処理…

Java逆引きクイックリファレンスの正誤表を勝手に作ってみる。

☆本家サポートページ http://book.mycom.co.jp/support/bookmook/quick/Java/☆勝手に正誤表 ページ 番号 場所 内容 p3 はじめに 1行目 誤: サンマイクロシステム正: サンマイクロシステムズ p5 目次 Q023 誤: デクラスのメソッドと〜正: クラスのメソッドと…

Java逆引きクイックリファレンスイマイチ。

Java逆引きクイックリファレンス Java5/6対応作者: team-thoth出版社/メーカー: 毎日コミュニケーションズ発売日: 2007/07/21メディア: 単行本(ソフトカバー) クリック: 18回この商品を含むブログ (6件) を見るJava5 / Java6の追加仕様についていけてなか…

一つのプロセスが開けるファイルの数はいくつ?(分からずじまい)

たのしいRuby第二版のp285 1つのプログラムが同時に開くことのできるファイルの数には制限があるので との記述がありますが、じゃあ一体いくつなの?と思い調べてみることにしました。 で、こんなプログラムを書いてみました。 i = 1 while true open("openl…

関数を関数に渡す

perlのmapみたいなやつをやってみる。(ちなみにFirefox搭載のJavaScript1.6にはmap関数あるそうな。) <script language = "JavaScript"> function hoge(x) { return x + 1; } function fMap(arr, func) { var ret = new Array(); var i; for(i = 0; i

数独を解くプログラムを作ってみる

こういうのを作ってみるのも、ちょっとした腕だめしにはなりますかね。 http://www5b.biglobe.ne.jp/~taka_2/jclass/archive/suudoku.zip まあ、あまりよいアルゴリズムではありませんが。 ポケット数独上級編のQ102がすごい難しくて融けなかったのです…

Jude Communityを使ってみる

ER図の作図ツールって、なんだか高そうなやつしかないらしいのですが、論理モデル作図ツール(クラス図)としてなら使えそうということでJude Communityをちょっと触ってみました。 さすがにDDL出力したりは出来ない(あたりまえ)ですが、なんだかJavaとは…

JRE1.4.2_07より1.5.0_06の方がエンコードCP930の変換結果が良い?

String str = new String(bytes, "CP930"); みたいな処理で、上記バージョンによる違いがあるということ。 1.4.2_07だと漢字があるバイト列の辺りで、なんだか途中で変換が終わってしまうことがあるようです。 しかし、そんなところでも微妙に進化しているん…

クラスをよしなにデバッグ出力

いつもコメントいただいているmoto0215さんのクラスをよしなにデバッグ出力したいなに反応してみる。 一般的なやりかたは、クラスのtoStringメソッドを実装するというやり方でしょう。 ■Main.java package test; public class Main { public static void mai…

cp500じゃなくて、cp930だった。

cp500でやったら半角カタカナが出なくなって、ちとあきらめ気味だったんですが、とりあえずサポートしてるエンコーディング全部試してみようって考えました。 が、javadocが見つからないので、どうやって調べようかと考えた末、String(byte[], String)のコン…

EBCDIC to SJISはcp500で出来るらしい

ふと日中思いついたのを思い出した。ので、こんなコードを書いてみる。 public class test { public static void main(String[] args) throws Exception { byte[] bArray = {0x40, (byte)0xF1, (byte)0xF2, (byte)0xF3}; System.out.println(new String(bArr…

結局Javaで作ることに。

昨日書いたCのツールですが、結局Javaに移植することにしました。 main関数しかないCのソースなので、そのまま使えるだろうと思って、Cのソースをコピーして拡張子をjavaに変えて、早速移植開始! 短いソース(100行ちょっと?)だったので、30分ほどで移植完了…

NetBeans5.0 日本語版をインストールしてみた

Restletのサンプルを動かしたくらいしか使ってないですが。 NetBeans4.0、4.1と使ってきて、軽いのが良かったのだが、5.0はなんとなく重いような気がする。 アイコンがかっこよくなっているのは、いいかも。