java - 无法从其他类访问公共实例
问题描述
我有两个实例:套接字和数据包在主类中是公共的,但我无法从其他类访问它们,它们在同一个包中。
我得到:找不到他们两个的符号。
public class enviar extends TimerTask {
public void run() {
socket.send(packet);
}
}
public class UDP_Client {
public static DatagramSocket socket;
static InetAddress address;
public static DatagramPacket packet;
public static void main(String args[]){
final int puerto = 3000;
try{
socket = new DatagramSocket();
address = InetAddress.getByName("localhost");
byte[] buf = payload.MSG.getBytes();
packet = new DatagramPacket(buf, buf.length, address , puerto);
while(true){
Timer timer = new Timer();
timer.schedule(new enviar(), 0, 50);
}
}catch(IOException e){
System.out.println(e);
}
}
}
谢谢小伙伴!!
解决方案
问题是您没有告诉 Java 在哪里可以找到socket
andpacket
字段。如果您指定包含它们的类,它将解决您的问题。您的代码应如下所示:
UDP_Client.socket.send(UDP_Client.packet);
这将起作用,但您也可以在enviar
文件中静态导入字段,这样您就不需要类名标识符。
import static package.to.UDP_Client.socket;
import static package.to.UDP_Client.packet;
然后你可以让你的代码保持原样。
推荐阅读
- jquery - 单击上一个按钮时,多步表单当前部分不验证
- python - 如何根据文件编号分隔不同的文本文件
- amazon-web-services - 在模式不完全匹配时触发 SNS 的 Cloudwatch 规则
- c# - 如何始终在空间墙前获得 AR 设计 Unity HoloLens
- java - 是否可以将 Map 的值分为两种类型?
- html - 轮播上方的按钮未对齐中心
- javascript - 滚动时使 CTA 按钮粘在页面底部
- karate - 配置 Karate Mock 以使用具有 JSON、XML 以外的内容类型的 API
- arrays - ColdFusion中结构数组的分组和排序结果
- angularjs - 在 AngularJS 中使用无限滚动