toString()重写如何工作

我刚刚了解了对象类中的toString()方法以及如何在其他类中覆盖它。

class Box {
      public String toString(){
          return "class Box";
      }
}

class B {
    public static void main(String args[]){
        Box b1=new Box();
        System.out.println(b1); //case 1
        Box b2=b1; //case 2
    }
}

所以我的问题是,在情况1中,box对象如何知道在Box类中的toString()中返回字符串,在情况2中如何返回b1对象的地址?

pllpll2003 回答:toString()重写如何工作

您正在调用的System.out.println方法是(Object)重载,而不是(String)PrintStream.println(Object)对其参数调用toString()(方法:直接或间接,除非参数为null)。

,

没有魔术。如果深入研究该方法,最终将//assumed class for demonstration only public class Data { public string name { get; set; } public string desc { get; set; } } //extension method public static class ListExtensions { public static string GetFirstProperty(this List<Data> list,Expression<Func<Data,string>> predicate) { //you can ignore the compilation here,if you use Func<Data,string> instead of Expression<Func<Data,string>> var compiledSelector = predicate.Compile(); return list.Select(x => string.IsNullOrWhiteSpace(compiledSelector(x)) ? "Not Available" : compiledSelector(x)).FirstOrDefault(); } } var name = MainList.GetFirstProperty(x => x.name); var desc = MainList.GetFirstProperty(x => x.desc); 显式调用。

toString
本文链接:https://www.f2er.com/2717760.html

大家都在问