タグ

ブックマーク / blogs.wankuma.com (4)

  • メソッド名ランキング

    メソッドの種類が 533 と予想以上に多いのが驚きですが、最も多く使われているメソッドは「Get」のようです。取得する処理が頻繁にあるということですね。あとこれに日語訳があればいいのですが、というよりそれが無いとあまり参考にならないので時間があるときにでも追加したいと思います。 今回調査した結果は、公開されている全てのクラスの公開されている全てのメソッド(Protected を含む)を対象にしました。アセンブリは System と名の付くものを全て含めています(やりすぎたかもしれません)。メソッドは先頭の単語のみ(Pascal 形式)を対象としています。このため一文字のメソッド名というおかしな結果もあります。オーバーロードされたメソッドは一つとしてカウントしています。 そして実際に結果を出力したコードがこれです。参考になるソースを見ながら作成したので、今回は C# です。 using S

  • 内部クラスの使いどころ

    話のネタを仕入れたはいいものの、使いどころに困ってはいませんか? バーでの会話で話題に絡めた小洒落た話を咄嗟にひろげられると粋ですよね。 内部クラスの階層の話ではクラスにも階層があるね、というお話でした。 今回はそのエンクロージング内部クラスの使いどころのお話です。 プログラミングというのは美術などと同じく、画材を知ったからと言って即、作品になるわけではありません。 新しい道具を得たからと言って、それを使ってどう新しい創作をするかというのは難しい問題です。 エンクロージング内部クラスは親のインスタンスへアクセスを許可された特別なクラスですが、 では、どういったときにこの特権を使えばいいのでしょうか? 今回はそのサンプルを挙げてみようと思います。 内部クラスのメリットは、外部クラスと秘密のやり取りができるというところです。 外部クラスはそのさらに外に情報を公開することなく、しかし、内部クラス

    amano41
    amano41 2014/09/19
  • ジェネリクスの代入を理解する その2

    前回はまず、ジェネリクス型パラメータを伴うList同士の代入互換性について述べました。 今回はそれらのListのadd()メソッドとget()メソッドについて見てきたいと思います。 なお、前回同様に C extends B, B extends A という継承関係があることとして以下話を進めます。 入力値の制約 前回で<? extends B>型には <B>も <C>も <? extends C>も代入できると述べました。 List<? extends B> listBEx = new ArrayList<C>(); ということができるわけですね。 さて、このlistBExにadd()をしてみるとしましょう。 listBEx.add(new B()); 実は、これがコンパイルエラーになるのです。 List<? extends B>型には B型をadd()できないのです! というのも、さきほ

    amano41
    amano41 2013/09/20
  • ジェネリクスの代入を理解する その1

    Javaのジェネリクスはかなり強力で、相当の型を表現できるのですが、 代償として非常に複雑なものとなっています。 ややこしいのは、オブジェクト指向の部分の型の代入互換性と、 ジェネリクス型パラメータの部分の代入互換性は、表現こそ似ているものの、 その意味するところはまるで違うと言うことにあります。 端的には、C extends B, B extends Aの関係があるとして、 型B にはサブクラスであるCをキャストなしに安全に代入することができます。 B b = new C(); しかし、ジェネリクス型パラメータの場合の List<B> listB = new ArrayList<C>(); はコンパイルエラーとなります。 List<? extends B> listBEx = new ArrayList<C>(); であれば代入が可能です。 このように、同じ継承階層の型を扱うのにもかかわ

    amano41
    amano41 2013/09/20
  • 1