Java:Object中的Object引用,包含原始Object引用

时间:2017-01-27 18:19:44

标签: java object reference linked-list

所以我挣扎了很长时间才找到关于此的文档并且失败了。问题更多的是"它如何运作"而不是解释一段代码。

麻烦:

xObject x = new xObject();
yObject y = new yObject( x );

x.add( y );

xObject的位置:

private ArrayList<yObject> yObjects;    

public void add( yObject _y ) {
    this.yObjects.add( _y );
}

而且yObject有:

private xObject x;

public yObject( xObject _x ) {
    this.x = _x;
}  

现在是否可以在x内的ArrayList中使用y s?

尝试通过测试来解决问题是不可能的,因为每当我尝试时,我似乎没有必要的脑力不会混淆(为什么我希望在这里比我更聪明的人可能能够帮忙)。

2 个答案:

答案 0 :(得分:3)

var Saveddata: [UIImage] = [] @IBAction func getAlbum(_ sender: AnyObject) { if (self.textEntercode.text == "") { let alert = UIAlertController(title: "No Entered value", message: "Please enter value", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil)); //event handler with closure present(alert, animated: true, completion: nil); } else { //-------------Get Data from Parse Server------------------- var photo = textEntercode.text let query = PFQuery(className: "Photostable10") query.whereKey("photo", equalTo: photo) //query.whereKey("Score", greaterThan: 1000) query.findObjectsInBackground(block: { (objects : [PFObject]?, error: Error?) -> Void in if error == nil { for object in objects! { if let userPicture = object.value(forKey: "photo") { let userPicture = object.value(forKey: "photo")! as! PFFile userPicture.getDataInBackground({ (imageData: Data?, error: Error?) -> Void in let image = UIImage(data: imageData!) if image != nil { self.Saveddata.append(image!) } }) } } } }) self.tableview.reloadData() } //else close } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell")! cell.textLabel!.text = "Post" cell.imageView?.image = Saveddata[indexPath.row] return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.Saveddata.count } 不包含yObjects:它包含yObjects的引用。实际上包含任何对象的唯一事情就是堆。

与您将朋友的姓名放在手机上的“联系人”列表中的方式没有什么不同,她可以将您的姓名放在手机的联系人列表中。没有悖论,因为您的联系人列表中没有一个包含实际人员:列表中只包含有关如何抓住人员的信息。同样,Java变量和Java容器实际上并不包含对象:它们只包含查找这些对象并与之交互所需的信息。

答案 1 :(得分:1)

是的,你可以在x里面玩y,因为它引用了对象。因此,如果您在x中更新y,则x之外的y也将更新。