JavaクラスローダーURLClassLoaderの使用方法
クラスローダーのURLClassLoaderの簡単なデモ
public class Test { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException { URL[] urls = new URL[] {new URL("http://192.168.119.132:8080/images/animal.jar")}; URLClassLoader classLoader = new URLClassLoader(urls); //加载类以后就可以得到 Class 对象了 Class<?> clazz = classLoader.loadClass("com.learn.animal.Dog"); classLoader.close(); //加载完类以后就可以删除了。 //关闭 classLoader, 否则会造成 资源泄露 Resource leak //这里不使用默认的构造器,使用带参数的构造器 获取特殊的构造器 Constructor<?> con = clazz.getDeclaredConstructor(String.class, int.class, int.class); //使用构造器创建对象 Object ob = con.newInstance("小黑",12,50); //在调用 Dog 对象的 say 方法,返回对 Dog 对象自己的描述 Method mtd0 = clazz.getMethod("say", new Class<?>[] {}); String dogSay = (String)mtd0.invoke(ob, new Object[] {}); System.out.println(dogSay); //再使用setter 方法,改变属性 模拟 Dog 对象,逐渐长大,变胖 哈哈! System.out.println("Three years later......"); Method mtd1 = clazz.getMethod("setAge", int.class); mtd1.invoke(ob, 15); Method mtd2 = clazz.getMethod("setWeight", int.class); mtd2.invoke(ob, 70); //注意这些方法是有返回值的! 返回值都是 Object 类型,需要自己强转类型 dogSay = (String)mtd0.invoke(ob, new Object[] {}); System.out.println(dogSay); System.out.println("It's over!"); } }
ここのURLリソースは、仮想マシン上に構築された簡単なnginxサーバーを使用しています。これも他の人のチュートリアルに従って構築しました。非常に簡単です。サーバーですね、笑。ただし、これでも十分に使用できますので、特に条件がない場合や、よりシンプルにしたい場合は、ローカル ファイル システムを使用することもできます。
使用 file:///jar パッケージ アドレス
これを置き換えるだけです。
ここで使用しているjarパッケージも非常にシンプルですが、クラスファイルのみのjarパッケージに直接打ち込んだので、以下を逆コンパイルしてコード画像を掲載します。
この逆コンパイルはコード全体ではありませんが、詳細は非常に単純です。say()
メソッドは 1 つだけです。完了するには、以下の実行中のスクリーンショットを参照してください。
次に、実行中のスクリーンショットがあります。ここでの -encoding utf-8 は、使用するエンコード文字セットを指定していることに注意してください。これは、cmd で実行されるコードがコンパイルされない可能性があるためです。中国人がいる。
以上がJavaクラスローダーURLClassLoaderの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック

Mavenは、Javaプロジェクト管理と建設の標準ツールです。答えは、POM.xmlを使用してプロジェクト構造、依存関係管理、建設ライフサイクルの自動化、プラグイン拡張機能を標準化するという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNCLEAN、コンパイル、テスト、パッケージ、インストール、展開などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競合を管理します。 4.マルチモジュールプロジェクト構造を通じて大規模なアプリケーションを整理し、親POMによって均一に管理されます。 5。

setupamaven/gradleprojectwithjax-rsdependencieslikejersey; 2.createarestresourceingnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationubclassorweb.xml;

Javaを使用してハッシュ値を生成するには、Messaged Gigestクラスを通じて実装できます。 1. MD5やSHA-256などの指定されたアルゴリズムのインスタンスを取得します。 2。.update()メソッドを呼び出して、暗号化されるデータを渡します。 3. .digest()メソッドを呼び出して、ハッシュバイト配列を取得します。 4.バイト配列を読み取りのために16進列に変換します。大きなファイルなどの入力については、チャンクで読み取り、.update()を複数回呼び出します。セキュリティを確保するために、MD5またはSHA-1の代わりにSHA-256を使用することをお勧めします。

ブロック、ハッシュ、チェーン構造、コンセンサスメカニズム、不変性など、ブロックチェーンのコアコンポーネントを理解します。 2.データ、タイムスタンプ、以前のハッシュおよびノンセを含むブロッククラスを作成し、SHA-256ハッシュ計算と作業採掘の証明を実装します。 3.ブロックリストを管理するためのブロックチェーンクラスを作成し、Genesisブロックの初期化、新しいブロックを追加し、チェーンの整合性を確認します。 4.メインテストブロックチェーンを書き込み、トランザクションデータブロックを順番に追加し、チェーンステータスを出力します。 5.オプションの拡張機能には、トランザクションサポート、P2Pネットワーク、デジタル署名、RESTAPI、およびデータの永続性が含まれます。 6.プロダクションレベルのオープニングには、Hyperledgerfabric、Web3J、CordaなどのJavaブロックチェーンライブラリを使用できます

はい、一般的なCSSドロップダウンメニューは、JavaScriptなしで純粋なHTMLおよびCSSを介して実装できます。 1.ネストされたULとLIを使用して、メニュー構造を構築します。 2。:Hover Pseudo-Classを使用して、プルダウンコンテンツのディスプレイと非表示を制御します。 3。位置の設定:親liの親relative、およびサブメニューは位置を使用して配置されます:Absolute; 4. submenuは表示されます:なし、それは表示されます:ホバリング時にブロック。 5.マルチレベルのプルダウンは、ネスティングを通じて、移行と組み合わせ、フェードインアニメーションを追加し、メディアクエリを備えたモバイルターミナルに適合させることができます。ソリューション全体はシンプルで、JavaScriptサポートを必要としません。これは大規模に適しています

@Propertyデコレーターは、メソッドをプロパティに変換して、プロパティの読み取り、設定、削除制御を実装するために使用されます。 1。基本的な使用法:@propertyを介して読み取り専用属性を定義します。これは、半径に基づいて直接アクセスされた領域などです。 2。高度な使用法: @name.setterおよび @name.deleterを使用して、属性の割り当て検証と削除操作を実装します。 3.実用的なアプリケーション:バランスが負でないことを確認するために、BankAccountなどのセッターでデータ検証を実行します。 4.命名仕様:内部変数はプレフィックスされ、プロパティメソッド名は属性と一致し、統一されたアクセス制御はコードセキュリティと保守性を向上させるために使用されます。

まず、JavaScriptを使用して、ユーザーシステムの設定とローカルに保存されたテーマ設定を取得し、ページテーマを初期化します。 1. HTML構造には、トピックの切り替えをトリガーするボタンが含まれています。 2。CSSの使用:rootは明るいテーマ変数を定義し、.dark-modeクラスは暗いテーマ変数を定義し、これらの変数をvar()を介して適用します。 3. JavaScript検出は、カラーのスchemeを好み、LocalStorageを読み取り、最初のテーマを決定します。 4.ボタンをクリックするときにHTML要素のダークモードクラスを切り替え、現在の状態をLocalStorageに保存します。 5.すべての色の変更には、ユーザーを強化するために0.3秒の移行アニメーションが伴います

FlexBoxまたはグリッドを使用して、フルスクリーンレイアウトを実現できます。コアは、ページの最小高さをビューポートの高さにすることです(最小高さ:100VH)。 2。Flex:1またはGrid-Template-rows:auto1frautoを使用して、コンテンツ領域を残りのスペースを占有します。 3.ボックスサイジングを設定します:ボーダーボックスは、マージンがコンテナを超えないようにします。 4。レスポンシブメディアクエリでモバイルエクスペリエンスを最適化します。このソリューションは、優れた構造と互換性があり、ログインページ、ダッシュボード、その他のシナリオに適しており、最後に、垂直センタリングとフルビューポートを備えたフル画面ページレイアウトを実現します。
