Masa / Lino Blog

Masanori Satoh ( Masa / Lino ) の徒然ブログです

javapのちょっと変わった使い方

javapはj2sdkに標準で付属するjavaアセンブラ
http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javap.html
普通はクラスファイルを"-c"オプションをつけて
アセンブルするのに使うが、ここでは少し変わった使い方を紹介。


普段の開発環境外でJavaをコーディングしないといけないとき、以下の状況が発生。

1. こんなAPIあったはずだけどメソッド名が思い出せない・・・
2. APIドキュメントが見たいけど、ローカルに保存されていない・・・
3. インターネットで調べればいいけど、ネットにつながっていない・・・


そういうときにjavapの出番。
javapを使ってクラスの全メソッド名を引数つきで表示できる。
出力結果はこんな感じ




C:\>javap java.lang.Math
Compiled from "Math.java"
public final class java.lang.Math extends java.lang.Object{
public static final double E;
public static final double PI;
public static strictfp double random();
static {};
public static strictfp double abs(double);
public static strictfp double acos(double);
public static strictfp double asin(double);
public static strictfp double atan(double);
public static strictfp double ceil(double);
public static strictfp double cos(double);
public static strictfp double exp(double);
public static strictfp double floor(double);
public static strictfp double log(double);
public static strictfp double rint(double);
public static strictfp double sin(double);
public static strictfp double sqrt(double);
public static strictfp double tan(double);
public static strictfp double toDegrees(double);
public static strictfp double toRadians(double);
public static strictfp long round(double);
public static strictfp double IEEEremainder(double,double);
public static strictfp double atan2(double,double);
public static strictfp double max(double,double);
public static strictfp double min(double,double);
public static strictfp double pow(double,double);
public static strictfp float abs(float);
public static strictfp int round(float);
public static strictfp float max(float,float);
public static strictfp float min(float,float);
public static strictfp int abs(int);
public static strictfp int max(int,int);
public static strictfp int min(int,int);
public static strictfp long abs(long);
public static strictfp long max(long,long);
public static strictfp long min(long,long);
}

クラス名をフルパス指定するのが重要。
メソッド名からなんとなく機能が想像できるから、後は何とかコーディングできる。
# 英単語のスペルが分からなくなる私には重要


困ったら使ってみてください。