【问题标题】:accessing elements of a linked list that is made up of a private custom class访问由私有自定义类组成的链表的元素
【发布时间】:2014-07-08 04:43:09
【问题描述】:

在一个项目中,我试图让两个或多个代理相互通信以收集环境中的东西。为此,我正在使用一个邮箱,其中包含他们将根据彼此之间发送的消息进行响应的消息。下面是我创建链接列表的地方

mailbox = new LinkedList[numberOfAgents()];
    for ( int i=0; i< numberOfAgents(); i++ ){ 
        mailbox[i] = new LinkedList<Message>();
        mailbox[i].add(new Message(i, knownBloodBanks, knownDonors));
}

然后是私信和意图类

private class Message 
{ 
    // instance variables 
    private int senderId;  
    private BoardComponentList donors; 
    private BoardComponentList bloodBanks; 
    private BoardComponent requestAssistanceAt; 
    private Intention iIntendToAssistAt; 

    public Message( int senderId, BoardComponentList d, BoardComponentList b ) 
    { 
        this.senderId = senderId;  
        donors = d; 
        bloodBanks = b; 
    } // end constructor 

    public void setIntentions( Intention intention ) 
    { 
        iIntendToAssistAt = intention; 
    } 

    public void setRequest( BoardComponent bC ) 
    { 
        requestAssistanceAt = bC; 
    } 

    public BoardComponentList getDonors() 
    { 
        return donors; 
    } 

    public BoardComponentList getBloodBanks() 
    { 
        return bloodBanks; 
    } 

    public Intention getIntentions() 
    { 
        return iIntendToAssistAt; 
    } 

    public BoardComponent getRequest() 
    { 
        return requestAssistanceAt; 
    } 

    public int getSenderId() 
    { 
        return senderId; 
    } 


} // end Message class 

private class Intention
{
    // instance variables 
    private BoardComponent target; 
    private double distanceTo; 

    public Intention( BoardComponent bC, double distance ) 
    { 
        target = bC; 
        distanceTo = distance; 
    } // end constructor 


    public BoardComponent getTarget() 
    { 
        return target; 
    } 

    public double getDistancetoTarget() 
    { 
        return distanceTo;
    } 

}

我一辈子都想不出如何访问私有类中的方法,以便我可以设定目标并查看代理之间的消息。任何正确方向的帮助或指示将不胜感激,我希望我已经包含了足够的信息,如果没有,请告诉我其他需要的信息

我没有清楚地解释自己,因为我经常发现问题,但是是的,私有类和第一个代码 sn-p 都在公共类中找到

【问题讨论】:

  • 您不能将课程设为私有。所以我认为你的代码给出了运行时错误。

标签: java methods linked-list private-class


【解决方案1】:
  1. 每个文件只能有一个公共类。
  2. 文件名(程序名)的名称应与名称匹配 公开课的。
  3. 您的公共类中可以有多个私有类,如 内部类。

下面的示例代码(修改了你的类,因为我们给出了编译错误):

package com.pkg1;

import java.util.LinkedList;

public class Sample{


    public Sample(){
        LinkedList[]    mailbox = new LinkedList[10];
        for ( int i=0; i< 10; i++ ){ 
            mailbox[i] = new LinkedList<Message>();
            mailbox[i].add(new Message(i));
    }
    }
    private class Message 
    { 
        // instance variables 
        private int senderId;  

        private Intention iIntendToAssistAt; 

        public Message( int senderId ) 
        { 
            this.senderId = senderId;  

        } // end constructor 

        public void setIntentions( Intention intention ) 
        { 
            iIntendToAssistAt = intention; 
        } 



        public Intention getIntentions() 
        { 
            return iIntendToAssistAt; 
        } 


        public int getSenderId() 
        { 
            return senderId; 
        } 


    } // end Message class 

    private class Intention
    {
        // instance variables 

        private double distanceTo; 

        public Intention( double distance ) 
        { 
            distanceTo = distance; 
        } // end constructor 


        public double getDistancetoTarget() 
        { 
            return distanceTo;
        } 

    }
}

【讨论】:

  • 对不起,我想我没有解释我发布的第一个代码 sn-p 以及私有类已经在一个公共类中,它确实与类名匹配等等我有什么问题with 正在按照 mailbox[0].get(0).getSenderId(); 的方式做一些事情
  • 试试 ((Message)mailbox[0].get(0)).getSenderId();
猜你喜欢
  • 2013-10-23
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多