我还在学秋千和套接字,所以请容忍我。为了学习,我正在制作一个聊天客户机/服务器系统。现在,我在调查客户。我的课是
当程序运行时,我在Main中设置了一个Main对象,但是当ActLis需要使用这个套接字到send a message时,我不知道从Main获得它的好方法。我所做的是完全无效的,并且有更好的方法来设置它,还是有一种方法可以从我的SocketManager类中获得我不知道的Main对象?(我意识到我的代码中还有其他问题,但我只是想让套接字开始工作,我很难处理它们。)
发布于 2012-05-13 17:14:25
你有几个选择:
1)在Main类中有一个ActLis对象,并将Main的引用传递给它
public class Main
{
public static void main(String[] args)
{
ActList a = new ActList(...);
SocketManager sm = new SocketManager(...);
a.sendMessageWithSocket(sm); //here you pass Main's reference to SocketManager
} //object to the ActLis class for use
} 2)让ActLis类在其构造函数中设置对SocketManager对象的引用
public class ActLis
{
private SocketManager sm;
public ActLis(SocketManager sm)
{
this.sm = sm;
}
}这些可能是最简单的方法来做到这一点。
发布于 2012-05-13 17:37:38
加入亨特·麦克米伦:
( 3)使主类,单例。不要让它有多个实例(如果我已经理解了您的目的,那么您不需要这个类的多个实例)。因此,只需创建该类的单个实例,并将其引用保留为其中的公共静态最终字段。(当然,不要让它从该类外部实例化:
public class Main
{
public static final Main instance = new Main(/*args*/);
private Main(/*args*/)
{
//blah blah
}
}这样,您就可以在代码中的任何地方以Socket表单访问您的Main字段,而不存在任何问题。
https://stackoverflow.com/questions/10573482
复制相似问题