-
-
Save zephiransas/8326406e4f2cb8d20c66511642395978 to your computer and use it in GitHub Desktop.
パッケージ名がわからないクラスにあるメソッドを呼び出すプログラム。(一部抜粋)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cl1; | |
public class class1{ | |
public static void start(){ | |
System.out.println("成功!2"); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cl2; | |
import cl1.class1; | |
public class class2{ | |
public static void main(String[] args){ | |
// パッケージ名が分からない、とのことだけど実際にはパッケージ名は分かるね | |
// class1.javaのpackage文から、cl1パッケージであることがわかる | |
// なのでやりたいことを正確に表現すると、「cl1パッケージにあるclass1クラスのstaticメソッド"start"を実行したい」だね | |
// ただ、現在のクラスclass2からはcl1のclass1クラスは見えないので、まずはimport文でclass1を見えるようにしてやります | |
// 3行目のimport文を参照してください。こうすることでclass1が見えるようになります | |
// あとはclass1のstaticメソッドを呼ぶので | |
class1.start(); | |
// で"成功!2"が出力されるはずです。 | |
// 最初「親クラスから子クラス〜」という話しだったけど、extendを使ってないので、親子関係はありません | |
// またクラス名は小文字で開始するのは(できるけど)推奨されません。なのでclass1はClass1とするのがベストです。ファイル名も同様にClass1.javaになります。 | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cl3; | |
public class class3{ | |
public static void start(){ | |
System.out.println("成功!:3"); | |
} | |
} |
@zephiransas
あ、あと、クラス名の初めは大文字で、パッケージ名の初めは小文字が推奨されている、っことでいいですか?
eclipceでやってたらそういう警告が出てきたもので...
getClass().getName();
の返り値って、文字列型ですよね...
僕は、Unityのupdate関数やstart関数みたいなのをJavaに再現したくって...
これは多分、fbの三宅さんの回答があってる気がします。なのでそちらを参考にしてみてください。
クラス名の初めは大文字で、パッケージ名の初めは小文字が推奨されている、っことでいいですか?
その理解でバッチリです 👍
getClass().getName();
の戻り値はStringですね
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Class.html#getName--
ありがとうございます、三宅さんが教えてくださったことを自分が作っているものにちょっと修正して、解決しました。
https://gist.github.com/yumaS19/8fc767ac1b24df76a3b65bed5fab6b51
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@zephiransas
あ、ごめんなさい、説明が悪かったです...
僕は、Unityのupdate関数やstart関数みたいなのをJavaに再現したくって...
うーん、うまい説明が思いつかないんですが、
ライブラリみたいなものを作っていて、ライブラリ側から、ユーザーが書いたコード側の関数を呼び出したいんです。
その時、ライブラリには、ユーザーが書いたコードのパッケージ・クラス名がわからないので、どうしようかな...と。
もう仕様というか使い方で、こういう名前でパッケージして下さい。っていう風に決めれればいいのですが...
そうするとあまりにも簡単になって作り甲斐がなくなってしまって...(;´・ω・)
何か方法ありますか?