我上课了
class Configuration { // varIoUs stuff @Override public String toString() { // assemble outString return outString; } }
我还有另一堂课
class Log { public static void d(String format,Object... d) { // print the format using d } }
Log类工作得非常好,我一直都在使用它.现在当我这样做:
Configuration config = getConfiguration(); Log.d(config);
我得到编译器错误Log类型中的方法d(String,Object …)不适用于参数(配置).我可以解决这个问题:
Log.d("" + config); // solution 1 Log.d(config.toString()); // solution 2
我的问题:这有什么不同?在第一个解决方案中,编译器注意到它必须连接两个字符串,但第二个是配置.所以Configuration#toString()被调用,一切都很好.在编译器错误情况下,编译器发现需要一个String,但是给出了一个Configuration.基本上是同样的问题.
>需要:字符串
>鉴于:配置
这些案例有何不同,为什么没有调用串?