インタフェースで部品化徹底 において、インタフェースはインスタンスを作ることができないと書きましたが、無名クラスを使うと、インタフェースがインスタンス化されたかのようなコードになります。 package kihon; public class Sample { public static void main( String args[] ) { Cafe cafe=new Cafe(){ public void welcome(){ System.out.println("いらっしゃいませ"); } }; cafe.welcome(); } } interface Cafe{ public void welcome(); } 実行結果 :いらっしゃいませ。 上の例の場合、本来であれば、Cafeインタフェースを実装したクラスを定義して、そのクラスのインスタンスを作ってメソッドを実行するのが筋
このページの目的は、 Webアプリケーションの基礎の基礎を説明することです。 さて、ここから下のぐだぐだは読み飛ばして、 いきなり実装の説明に 行ってもらってもかまいませんが、一応趣旨を書いておきます。 現在、プロのプログラマーの方々には、日々の仕事でせっせと 「Webアプリケーション」を作っている人が多いと思います。 そして、いまどきWebアプリケーションを作るのに、 CGIとかあり得ないでしょうから、 それなりの高級言語で、 それなりのフレームワーク等を使用して作っているのだと思います。 私自身、現状、仕事では主にC#とASP.NETを使っています。 そうやって生産性を上げるのは大変よいことだと思うのですが、 ことWebアプリケーションにおいては、 そのような「一見簡単そう」なフレームワークを使っても、 ちょっとややこしいことをやろうとするとすぐにうまくいかなくなって、 職場の先輩に聞
eclipse上でc++コードをデバッグしたいという野望は現在中断。 このままだと進まないのでeclipse上でc++のコンパイルが出来たところで先に行くのです。 で、次はc++からJavaの関数の呼び出しです。 c++->Javaの呼び出しの基本はこんな感じ。 c++側 jclass jc = env->FindClass("com/java/package/ClassName"); if (jc == 0) { return false; } // メソッドの取得 jmethodID id = env->GetStaticMethodID(jc, "function", "()V"); //メソッドを実行。 env->CallStaticVoidMethod(jc, id); java側 package com.java.package; public class ClassName
他言語からJava実行 JNIを使って、C言語/C++からJavaVMを実行してメソッドを呼び出すことも出来る。 C言語またはC++内でJavaVMを生成(取得)し、後は通常のJNIと同様にコーディングする。 Windowsでの実行環境 リンク時にjvm.libが必要。→(VC++)ライブラリの追加方法 jvm.libは「%JAVA_HOME%\lib」に在る。→(VC++)ライブラリのパス指定方法 実行時にjvm.dllが必要。 jvm.dllは「%JAVA_HOME%\jre\bin\client」や「%JAVA_HOME%\jre\bin\server」に在る。 →(VC++)デバッグ実行時の環境変数PATHの追加方法 JavaVMの生成・破棄 JavaVMのオブジェクトを作成するには、jni.hで宣言されているJNI_CreateJavaVM関数を使う。 これに渡すための引数の初期
cygwin-gcc † いろいろ方法はあるんだろうけど、一番簡単そうなdefファイルを作ってやる方法。 関数の数が多いと面倒だが。。 javahでヘッダーを作成したら、そのなかから関数の名前を取り出してきて 以下のようなファイル"hoge.def"を作成する。 EXPORTS Java_NativeFunctions_initialize_1IMPL Java_NativeFunctions_terminate_1IMPL という感じに、EXPORTSのあとに関数命を連ねる(戻り値とか引数は無視) で、ソースファイル"hoge.cpp"として、以下のようにコンパイル g++ -O3 -c hoge.cpp -o hoge.o -O2 -Wall -mrtd -g -mno-cygwin -I<jni.hのある場所> あとはリンク、ここがキモ。 以下のような感じでhoge.defを指定して
ここ2日間くらい、AndroidでNativeActivityから自作Javaクラスのメソッドが呼び出せずに悩んでいましたが、無事解決できたのでNativeActivityのCのコードからJavaを呼び出すサンプルを載せます。 Javaクラスの作成 まずは、EclipseでAndroid NDKのサンプルからNativeActivityのプロジェクトを作ります。 Android NDKのサンプルからNativeActivityのプロジェクトを読み込み NativeActivity/srcフォルダにandroid.app.NativeActivityを継承して適当な名前のクラス(ここでは"TestJNI")を作ります。 NativeActivityを継承してクラスを作成 ここに使いたいコードを書いていきます。 // TestJNI.java package com.example.nativ
ネイティブコードからクラスやオブジェクトのメソッドを呼び出す. 流れ サンプル インスタンスメソッドとスタティックメソッド メソッドIDの取得とシグネチャ javap 流れメソッドを呼び出す時の流れは,フィールドの取得や設定とそんなに変わらない.以下にその流れを示す. インスタンスメソッドの場合スタティックメソッドの場合 <Type>にはメソッドの返り値の型と対応するInt,Short,Byteなどが入る. サンプル流れが掴めたところでサンプルを示す.まずはネイティブコードから呼び出されるメソッドを保持するクラス. public class Methods{ public void publicVoidMethod(){ System.out.println("publicVoidMethod()"); } static int pkgPrivateStaticIntMethod(){ i
AndroidでJNIを使ってnativeコードからファイルを読み書きする方法を調べた。ファイルは /data/data/{pkgname} 以下のフォルダに読み書きすることができるらしい。読み書きはLinuxでのファイルIOと同じ関数open/read/write/closeが使える。 Javaからnativeの関数に byte[]配列を渡してそれをファイルに書き込む関数を作ってみた。以下のJavaソースをjavahで変換して対応するヘッダファイルを作成。 FileManager.java package test.filetest; public class FileManager { public native int write(byte[] data); static { System.loadLibrary("filetest"); } } test_filetest_File
java.net クラス URLConnection java.lang.Object java.net.URLConnection 直系の既知のサブクラス: HttpURLConnection, JarURLConnection public abstract class URLConnectionextends Object abstract クラス URLConnection は、アプリケーションと URL との間の通信リンクを表すすべてのクラスのスーパークラスです。このクラスのインスタンスを使用して、URL で参照するリソースの読み込みと書き込みの両方を行うことができます。一般に、URL への接続の作成は、次のような複数の手順が必要となります。 URL に対して openConnection メソッドを呼び出すことによって、接続オブジェクトを生成する セットアップパラメータと一般要
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く