我的问题:“返回ipAddr” ipAddr无法解析为变量。 那么,这是因为该方法是静态的吗?
package oop.address;
import java.net.InetAddress;
public class address {
public static address createIP(String ip) {
try {
InetAddress ipAddr = InetAddress.getByName(ip);
} catch (Exception e) {
System.out.println("Fehler");
}
return null;
}
public InetAddress get_ipAddr(){
return ipAddr;
}
}
答案 0 :(得分:1)
那么,这是因为该方法是静态的吗?
该方法是静态的与它无关。问题是ipAddr
是在createIP()
中创建的,因此仅存在于方法范围内。我相信您想将其设为类变量:
private static InetAddress ipAddr;
public static address createIP(String ip) {
try {
ipAddr = InetAddress.getByName(ip);
} catch (Exception e) {
System.out.println("Fehler");
}
return null;
}
答案 1 :(得分:0)
每对{}
都会创建一个具有其自身“生存期”的自定义范围,在方法主体中嵌套块的情况下,该范围总是比外部范围短。
简单的解决方法是:
public static address createIP(String ip) {
InetAddress ipAddr = null;
try {
ipAddr = InetAddress.getByName(ip);
} catch (Exception e) {
System.out.println("Fehler");
}
return ipAddr;
}
但是,如果要消除null
,则必须将异常抛出到下一个堆栈帧(或者不能捕获它),或者在发生异常的情况下指定默认值。