検索

ホームページ  >  に質問  >  本文

java中可以通过类的class属性得到该类的字节码文件对象?


Class c1 = Student.class;
可是无论是Student类还是它继承的Object类都没有class属性呀?

ringa_leeringa_lee2802日前582

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-04-18 10:52:41

    お誘いありがとうございます。

    まず、クラスは Student クラスの静的メンバーではなく、キーワードであるというエラーを修正します。 <class-name>.class は Java の特定の構文です。

    次に、このクラスのバイトコード ファイルを取得するには、ファイル システムにアクセスしてファイルを見つける必要があります。これは Student.class.getResource/getResourceAsStream のようなメソッドにすぎず、非常に面倒です。 asm や cglib などのバイトコードのオープン ソース プロジェクトを検討することをお勧めします。

    最後に、バイトコードは比較的複雑なテクノロジであるため、メソッドのパラメータでアノテーションを取得するなどの最後の手段として使用する必要があります (Spring Web MVC を参照)。バイトコードに関連すると思われる一部のテクノロジーは、実際にはバイパスされる可能性があります。たとえば、インターフェイスベースの AOP は、バイトコードの代わりにプロキシを使用して実装できます。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:52:41

    私が確認した理論の 1 つは、これはキーワードではなくリテラル値であるということです。IDE に直接「Student.class」と入力してみると、この値を変数に割り当てる必要があることが通知されます。後で新しいものを見つけたら追加します。クラスのロードについては、私のブログ「カスタマイズされたクラスローダー - .class と .jar からの読み取り」を参照してください。

    返事
    0
  • キャンセル返事