Skip to content

Instantly share code, notes, and snippets.

@zephiransas
Forked from yum45f/class1.java
Last active July 30, 2017 14:49
Show Gist options
  • Save zephiransas/8326406e4f2cb8d20c66511642395978 to your computer and use it in GitHub Desktop.
Save zephiransas/8326406e4f2cb8d20c66511642395978 to your computer and use it in GitHub Desktop.
パッケージ名がわからないクラスにあるメソッドを呼び出すプログラム。(一部抜粋)
package cl1;
public class class1{
public static void start(){
System.out.println("成功!2");
}
}
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になります。
}
}
package cl3;
public class class3{
public static void start(){
System.out.println("成功!:3");
}
}
@yum45f
Copy link

yum45f commented Jul 30, 2017

@zephiransas
あ、ごめんなさい、説明が悪かったです...
僕は、Unityのupdate関数やstart関数みたいなのをJavaに再現したくって...
うーん、うまい説明が思いつかないんですが、
ライブラリみたいなものを作っていて、ライブラリ側から、ユーザーが書いたコード側の関数を呼び出したいんです。
その時、ライブラリには、ユーザーが書いたコードのパッケージ・クラス名がわからないので、どうしようかな...と。
もう仕様というか使い方で、こういう名前でパッケージして下さい。っていう風に決めれればいいのですが...
そうするとあまりにも簡単になって作り甲斐がなくなってしまって...(;´・ω・)
何か方法ありますか?

@yum45f
Copy link

yum45f commented Jul 30, 2017

@zephiransas
あ、あと、クラス名の初めは大文字で、パッケージ名の初めは小文字が推奨されている、っことでいいですか?
eclipceでやってたらそういう警告が出てきたもので...

@yum45f
Copy link

yum45f commented Jul 30, 2017

getClass().getName();

の返り値って、文字列型ですよね...

@zephiransas
Copy link
Author

僕は、Unityのupdate関数やstart関数みたいなのをJavaに再現したくって...

これは多分、fbの三宅さんの回答があってる気がします。なのでそちらを参考にしてみてください。

クラス名の初めは大文字で、パッケージ名の初めは小文字が推奨されている、っことでいいですか?

その理解でバッチリです 👍

getClass().getName();の戻り値はStringですね

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Class.html#getName--

@yum45f
Copy link

yum45f commented Jul 30, 2017

ありがとうございます、三宅さんが教えてくださったことを自分が作っているものにちょっと修正して、解決しました。
https://gist.github.com/yumaS19/8fc767ac1b24df76a3b65bed5fab6b51

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment