Print引用(对象)

package reusing;
class WaterSource {
  private String s;
  WaterSource() {
    System.out.println("WaterSource()");
    s = "Constructed";
  }
  public String toString() { 
//	  return getClass().getName() + "@" + Integer.toHexString(hashCode());
	  return s;
	  }
	
}
public class SprinklerSystem {
  private String valve1, valve2, valve3, valve4;
  private WaterSource source = new WaterSource();
  private int i;
  private float f;
  public String x(){
	  return "source = " + source;
  }
  public String toString() {
    return
      "valve1 = " + valve1 + " " +
      "valve2 = " + valve2 + " " +
      "valve3 = " + valve3 + " " +
      "valve4 = " + valve4 + "\n" +
      "i = " + i + " " + "f = " + f + " "
      + "source = " + source;
  }	
  public static void main(String[] args) {
	  WaterSource ss=new WaterSource();
//    SprinklerSystem sprinklers = new SprinklerSystem();
    System.out.println(ss);
    
  }
} 

   解析:

println(引用)对象:编译器调用println方法(

public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

println方法调用valueOf方法,(空引用则返回null)返回对象的toString方法,并调用print方法打印

public static String valueOf(Object obj) {
 return (obj == null) ? "null" : obj.toString(); }

 若无类中无重写toString方法则调用默认方法

public String toString() {

        return getClass().getName() + "@" + Integer.toHexString(hashCode());

    }


 *  若重写toString方法则打印方法的返回


若print打印的是对象(引用),调用valueOf方法(空引用则返回null)返回对象的toString方法,并打印

 public void print(Object obj) {
        write(String.valueOf(obj));
    }

/**Output:
WaterSource()  
valve1 = null valve2 = null valve3 = null valve4 = null
i = 0 f = 0.0 source = Constructed  
a
WaterSource()  
Constructed 
 * 
 */


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用递归的方法来处理多层引用对象的转换。下面是一个示例代码,演示了如何将一个多层嵌套的引用对象转换为对应的对象: ```python def map_to_object(data): # 检查输入数据的类型 if isinstance(data, dict): # 创建一个空的目标对象 obj = {} # 遍历字典中的每个键值对 for key, value in data.items(): # 递归处理每个值,并将结果赋给目标对象的对应键 obj[key] = map_to_object(value) return obj elif isinstance(data, list): # 创建一个空的目标列表 obj = [] # 遍历列表中的每个元素 for item in data: # 递归处理每个元素,并将结果添加到目标列表中 obj.append(map_to_object(item)) return obj else: # 如果不是字典或列表,直接返回值 return data ``` 你可以将你的多层引用对象传递给 `map_to_object` 函数,它将返回转换后的对象。请注意,这里假设你的多层引用对象是合法且没有循环引用的。 例如,如果你有以下的多层引用对象: ```python data = { 'name': 'John', 'age': 30, 'address': { 'city': 'New York', 'zip_code': '10001' }, 'friends': [ { 'name': 'Alice', 'age': 28 }, { 'name': 'Bob', 'age': 32 } ] } ``` 你可以使用 `map_to_object` 函数将其转换为对应的对象: ```python obj = map_to_object(data) print(obj) ``` 输出结果将会是: ``` { 'name': 'John', 'age': 30, 'address': { 'city': 'New York', 'zip_code': '10001' }, 'friends': [ { 'name': 'Alice', 'age': 28 }, { 'name': 'Bob', 'age': 32 } ] } ``` 希望这个示例能帮助你完成多层引用对象对象的转换。如果你有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值