亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
著者からのメッセージ
ホームページ Java &#&ベース Java アノテーション - Java 獨(dú)自の構(gòu)成ファイル

Java アノテーション - Java 獨(dú)自の構(gòu)成ファイル

Jan 06, 2022 pm 03:46 PM
java

著者からのメッセージ

皆さんこんにちは。これが私の最初の記事です。私が學(xué)んだ知識(shí)を要約して皆さんと共有したいと思います。次の期間に皆さんにも共有したいと思います。一連の Java、Python、およびその他の エントリーレベル 関連記事を體系的に共有して、強(qiáng)固な基礎(chǔ)を築いてさらに先に進(jìn)むことができます。みなさんもアドバイスをいただければ幸いです!早速、実踐的な內(nèi)容に移りましょう。 (侵害が含まれている場(chǎng)合は、削除するためにこのプラットフォームを通じて私に連絡(luò)してください)

序文

設(shè)定ファイルとしての XML は、以下のユーザーの間で人気があります。しかし、ほとんどのプログラマーはアノテーションを使用することを好む人もいます。実際、私は個(gè)人的には、その選択は重要ではないと感じています。重要なのは、それぞれのテクノロジーの誕生の本質(zhì)を理解することです。構(gòu)成ファイルおよびコードとしての XML は「大まかに言うと、 「結(jié)合された」コード記述ですが、XML 構(gòu)成ファイルが多すぎると管理が困難になります。同時(shí)に、IDE は XML 構(gòu)成ファイルの正確性を検証できず、テストの難易度が高くなります。アノテーションは「緊密に」記述されます。この目的は、「ゼロ」構(gòu)成でありながら、アプリケーションの拡張を容易にすることです。

1. アノテーションとは

アノテーションとは、コード內(nèi)のメタデータ(メタデータ:データを説明するデータ)であるアノテーションのことで、プログラム開発者はアノテーションを利用することで、元のロジックを変更せずに、ソース ファイルに補(bǔ)足情報(bào)を埋め込みます。次のコード スニペットを見てください:

Java アノテーション - Java 獨(dú)自の構(gòu)成ファイル

実際、初心者にとっては、同様のコードを見て、@Override とは一體何だろうと疑問(wèn)に思うことがよくあります。 @Override を toString() メソッドに追加するということは、アノテーションの下の toString() メソッドが親クラスのメソッドを再構(gòu)築する必要があることを意味します。

これを見て、次はいろいろなアノテーションを紹介しようと思う人もいるのでは? !私はしません!

2. アノテーション型の文法標(biāo)準(zhǔn)

アノテーションは Java における特殊な型であり、次にアノテーション型の設(shè)計(jì)方法を見てみましょう。

1. 文法標(biāo)準(zhǔn):

public   @interface   注解類型名稱
{
    [   數(shù)據(jù)類型    變量名 ()    [   default  初始值   ];   ]
}

注:

1) 「[ ]」內(nèi)の內(nèi)容はオプションであり、注釈が空の場(chǎng)合は、現(xiàn)在の注釈を意味しますロゴに注釈を付けます。

2) アノテーションには変數(shù)をインテリジェントに含める必要があり、メソッドを含めることはできません。

3) アノテーションはコード內(nèi)の特別なマークであり、単獨(dú)で使用することはできず、クラスまたはインターフェイスと組み合わせて使用??する必要があります。

4) アノテーション タイプを使用して、プログラム要素 (プログラム要素: クラス、メソッド、メンバー変數(shù)など) のメタデータを設(shè)定できます。

2. ケース: アノテーション タイプを Testable として設(shè)計(jì)し、このアノテーションによって識(shí)別されるメソッドはテスト可能なメソッドです。注釈は內(nèi)部的には空であり、注釈が識(shí)別注釈であることを示します。

public  @interface  Testable
{
}
public class Test

{

      @Testable

       public void info()

      {

              System.out.println(“我是info方法”);

      }

      public void info1()

      {

              System.out.println(“我是info1方法”);

      }

}

@Testable 注釈は、info メソッドが実行可能メソッドであることを示すために、このクラスに追加されます。この注釈は、メソッドが実行可能メソッドであることのみを記述しており、動(dòng)的な対話機(jī)能はありません。このアノテーションの機(jī)能を?qū)g現(xiàn)するには、サポートする Java アプリケーションを作成する必要があります。具體的なコードについては、次のコードを參照してください。

考えてみてください。クラスの內(nèi)部構(gòu)造を解析したい場(chǎng)合、それを?qū)g現(xiàn)するにはどのようなテクノロジを使用できるでしょうか?

答えは、リフレクションの仕組みです (次の段落のリフレクションの仕組みがよくわからないという方は、以下のコードに従ってデバッグしてください。リフレクションの仕組みについての具體的な知識(shí)は後ほど公開します)。

java.lang.reflect パッケージ內(nèi)のリフレクション機(jī)能を持つ共通ツール クラス: Method (メソッド クラス)、Field (フィールド クラス)、Constructor (コンストラクター メソッド クラス) など。

上記のツール クラスは、ランタイム アノテーションを読み取る機(jī)能を拡張します。つまり、java.lang.annotation.AnnotatedElement インターフェイスを?qū)g裝します。このインターフェイスは、すべてのプログラム要素の親インターフェイスであり、このインターフェイスは、プログラム要素を取得するための関數(shù)を提供します。注釈情報(bào)関連のメソッド。

  • #getAnnotation(Class annotationClass): プログラム要素の指定されたタイプの注釈を返します。このタイプの注釈が存在しない場(chǎng)合は、null を返します

  • Annotation [] getAnnotations(): プログラム要素に存在するすべての注釈を返します。

  • Annotation はすべてのアノテーションの親インターフェイスです。デフォルトでは、どのインターフェイス タイプでもこのインターフェイスが実裝されます。

  • boolean isAnnotationPresent(Class annotationClass): プログラム要素に指定されたタイプの注釈が含まれているかどうかを判斷します。存在する場(chǎng)合は true を返し、存在しない場(chǎng)合は false を返します。

コード リファレンス:

Test クラスを解析し、@Testable でマークされたメソッドを?qū)g行します。

import java.lang.reflect.Method;
public class UseTest
{
        public static void main(String[] args)throws Exception
        {
                  Class c=Class.forName(“Test”);
                  Object o=c.newInstance();
                  Method[] me=c.getDeclaredMethods();
                  for(Method temp:me)
                  {
                           if(temp.isAnnotationPresent(Testable.class))
                                   temp.invoke(o,new Object[0]);
                  }
         }
}
わかりました。プログラムを?qū)g行して効果を確認(rèn)できます。


。 。 。 。 。 。 。

特に絶句じゃないですか(ˉ▽ˉ;)…, 実際にコードを?qū)g行してみると、思っていたのと違って何も結(jié)果が出ていないことが分かりますね。 !

次回の內(nèi)容を知りたい場(chǎng)合は、次回の內(nèi)訳を読んでください。

3. まとめ:

次に、友達(dá)がマスターする必要がある知識(shí)ポイントをまとめてみましょう。

1. XML とアノテーションの違い

2. アノテーションとは

3. アノテーション設(shè)計(jì)の文法標(biāo)準(zhǔn)

4. 反映メカニズム

5. java.lang.annotation.AnnotationElement のメソッドと関數(shù)

4. まとめ

急いで終わった理由をお話します初めて記事を書くとき、どのような內(nèi)容になるか分かりませんが、殘りの関連知識(shí)については次の記事を読んでください。

以上がJava アノテーション - Java 獨(dú)自の構(gòu)成ファイルの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vscode settings.jsonの場(chǎng)所 vscode settings.jsonの場(chǎng)所 Aug 01, 2025 am 06:12 AM

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設(shè)定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設(shè)定

Python Itertoolsの組み合わせの例 Python Itertoolsの組み合わせの例 Jul 31, 2025 am 09:53 AM

itertools.combinationsは、反復(fù)可能なオブジェクトから指定された數(shù)の要素を選択するすべての非反復(fù)的な組み合わせ(無(wú)関係な順序)を生成するために使用されます。その使用には、次のものが含まれます。1。繰り返しの順序を避けるために、( 'a'、 'b')、 'a'、 'c')など、リストから2つの要素の組み合わせを選択します。 2?!窤BC」や「ABD」などの文字列の3文字の組み合わせを取り、サブシーケンス生成に適しています。 3。2つの數(shù)値の合計(jì)が1 5 = 6などのターゲット値に等しい組み合わせを見つけ、ダブルループロジックを簡(jiǎn)素化します。組み合わせと配置の違いは、順序が重要かどうかにあります。組み合わせはABとBAを同じと見なし、順列は異なると見なされます。

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動(dòng)コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場(chǎng)合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場(chǎng)合はconn.rollback()を呼び出します。同時(shí)に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお?jiǎng)幛幛筏蓼埂?/p>

SpringとGuiceを使用したJavaでの依存関係のマスタリング SpringとGuiceを使用したJavaでの依存関係のマスタリング Aug 01, 2025 am 05:53 AM

依存関係の指示(di)isadesignpatternwhere objectsreceivedenciesiesedternally、setter、orfieldinoffiction.2.springframeworkusessaNnotationslike@component、@service、@autowiredwithjava Basedconfi

Python pytestフィクスチャの例 Python pytestフィクスチャの例 Jul 31, 2025 am 09:35 AM

フィクスチャは、テスト用のプリセット環(huán)境またはデータを提供するために使用される関數(shù)です。 1. @pytest.fixtureデコレータを使用して、フィクスチャを定義します。 2。テスト関數(shù)にパラメーター形式にフィクスチャを注入します。 3。降伏前にセットアップを?qū)g行してから斷片を?qū)g行します。 4。関數(shù)、モジュールなどのスコープパラメーターを介して範(fàn)囲を制御します。 5.共有フィクスチャをconftest.pyに配置して、クロスファイル共有を達(dá)成し、それによってテストの保守性と再利用性を改善します。

一般的なJava「OutofMemoryError」シナリオのトラブルシューティング 一般的なJava「OutofMemoryError」シナリオのトラブルシューティング Jul 31, 2025 am 09:07 AM

java.lang.outofmemoryerror:Javaheapspaceは、ヒープメモリが不十分であることを示しており、大きなオブジェクト、メモリリーク、ヒープ設(shè)定の処理を確認(rèn)し、ヒープダンプ分析ツールを介してコードを見つけて最適化する必要があります。 2.メタスパースエラーは、過(guò)度のクラスメタデータによる動(dòng)的クラスの生成またはホットデプロイメントで一般的であり、Maxmetaspacesizeは制限され、クラスの負(fù)荷を最適化する必要があります。 3. unabletoccreateNewThread System Sthoopリソースを使い果たしたため、スレッドの數(shù)を確認(rèn)し、スレッドプールを使用し、スタックサイズを調(diào)整する必要があります。 4。GCOVERHEADLIMITEXCEEDEDとは、GCが頻繁に発生するが、リサイクルが少なく、GCログを分析および最適化する必要があることを意味します。

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時(shí)刻を取得します。 3。of()メソッドを使用して特定の日付と時(shí)刻を作成します。 4.プラス/マイナスメソッドを使用して、時(shí)間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Java開発者向けの高度なスプリングデータJPA Java開発者向けの高度なスプリングデータJPA Jul 31, 2025 am 07:54 AM

Advanced SpringDatajpaのマスタリングの中核は、シナリオに基づいて適切なデータアクセス方法を選択し、パフォーマンスと保守性を確保することです。 1。カスタムクエリでは、@QueryはJPQLとネイティブSQLをサポートします。これは、複雑な関連性と集約操作に適しています。 DTOまたはインターフェイス投影を使用して、オブジェクト[]を使用して引き起こされるメンテナンスの問(wèn)題を回避するために、タイプセーフマッピングを?qū)g行することをお?jiǎng)幛幛筏蓼埂?2。ページング操作は、ページ可能と組み合わせて実裝する必要がありますが、N 1クエリの問(wèn)題に注意してください。 JoinFetchを介して関連データをプリロードするか、プロジェクションを使用してエンティティの負(fù)荷を減らしてパフォーマンスを向上させることができます。 3.マルチコンディショナルダイナミッククエリの場(chǎng)合、JPaspificaを使用する必要があります

See all articles