无法解析同一类但在静态方法中的变量

时间:2018-11-20 23:47:59

标签: java class static

我的问题:“返回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;
        }

    }

2 个答案:

答案 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,则必须将异常抛出到下一个堆栈帧(或者不能捕获它),或者在发生异常的情况下指定默认值。