我正在开发一个 Android 应用程序,它可以通过同时调用电话和发送包裹来手动在 3G 和 4G 之间切换。当我结束通话时,包裹将继续发送,将手机保持在 3G 状态,但是当我按下一个按钮时,它会终止包裹。
我对大部分代码都很好,但是我从其他人那里得到了发送包的程序,我对如何运行它有点困惑,特别是我在声明时遇到的这个错误字段套接字。我收到一条错误消息,指出“默认构造函数无法处理隐式 super 构造函数抛出的异常类型 SocketException。必须定义显式构造函数。”
这是我的包的类文件:
package com.example.derpphone;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.TimerTask;
public class timer extends TimerTask {
DatagramSocket socket = new DatagramSocket();
@Override
public void run() {
if (socket != null) {
byte[] bytes = new byte[100];
SocketAddress serverAddress = new InetSocketAddress("131.179.176.74",
9998);
try {
DatagramPacket packet = new DatagramPacket(bytes,
bytes.length, serverAddress);
socket.send(packet);
} catch (Exception e) {
}
}
}
}
最佳答案
将您的代码更改为:
DatagramSocket socket;
public timer() throws Exception {
socket = new DatagramSocket();
}
当你写的时候:
DatagramSocket socket = new DatagramSocket();
没有默认构造函数,它等同于:
DatagramSocket socket;
public timer() {
super();
socket = new DatagramSocket();
}
由于 DatagramSocket 构造函数抛出异常,需要捕获或声明。
关于java - 默认构造函数无法处理隐式 super 构造函数抛出的异常类型 SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24687021/