私はスカラーで長い時間を過ごした後でJava 8を見てきました。私がハッキングしていたときにスカラーモードになってしまったので、私は"# instance_method:%s thread:%d".format(testStr, testNum);"
のようなものを書きました。奇妙なコンパイラは、たとえString型のドキュメントで "format"という名前のインスタンスメソッドを見つけられなくても、私は静的メソッドのドキュメントがここで何を意味するのか分かりませんでした。したがって、次のコード:文字列インスタンスの呼び出し形式
public class Weird{
public static void main(String[] args){
String testStr = "hmm";
Long testNum = 7L;
String weird = "# instance_method:%s thread:%d".format(testStr, testNum);
String msg = String.format("# static:%s thread:%d", testStr, testNum);
System.err.println(weird);
System.err.println(msg);
}
}
は出力を与えた:
hmm
# static:hmm thread:7
ので"# instance_method:%s thread:%d".format(testStr, testNum);
はtestStr
に評価されます。私はおそらく何かダムをやっているが、ここで何が起こっているのだろうか?
ええ、見つけにくい:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object .. .-。インスタンスまたはクラス自体(最初のものはコード化されていないものの、コードの匂いですが)では静的メソッドを呼び出すかどうかは関係ありません。 – Tom
インスタンスメソッドはどこですか? public static String format(String format、 Object ... args) – sgldiv
@sgldivインスタンスメソッドはありません。しかしJavaでは、インスタンスに対して 'static'メソッドを呼び出すことができます。 – resueman