有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我设置了一个变量的值,但是当我使用get时,参数为null

我只是想问一下我的java程序有什么问题

我在java程序中的特定类中设置“id”变量的值,然后 我打印了变量的值,以确保它已被设置

我使用一个脚本在同一个java程序中运行一个类,然后得到“id”的值,但它返回null

我的代码可能有什么问题

谢谢

因此,我将ChargeParamData设置为一个单例类,然后由ChargeFacade访问该类以设置/获取数据

我创建的脚本将调用Chargefacade类的notifyAuthenticationStatus。但当它被称为pluginId时,它是空的

这是get/set类

public class ChargeParamData {

    private static final ChargeParamData instance = new ChargeParamData();

    /**
     * Returns the instance of the class
     * 
     * @return instance of the class
     */
    public static ChargeParamData getInstance() {
        return instance;
    }

    /**
     * Constructor
     * 
     */
    private ChargeParamData() {
    }

    //for PluginId
    private static String pluginId;

    public static void setPluginId(String id) {
        pluginId = id;
        System.out.println("pluginId to set for Charge is " + pluginId);
    }

    public static String getPluginId() {
        System.out.println("pluginId to get for console test is " + pluginId);
        return pluginId;
    }
}

这是使用该类的代码:

public final class ChargeFacade {
    private static ChargeParamData chargeParam = ChargeParamData.getInstance();

    public static void chargePluginInit() {
        String pid = null;
        PluginDescriptor[] pdList = sample.listPlugin();
        pid = pdList[0].getId();
        createContext(pid);
    }

    private static void createContext(String pluginId) {
        chargeParam.setPluginId(pluginId);
        logger.info("Charge Service created for " + pluginId);
    }

    public static String notifyAuthenticationStatus(AuthenticationStatus authStat) throws DispatcherException {
        String pluginId = chargeParam.getPluginId(); // <-- this part is null
        try {
            JSONObject json = new JSONObject();
            authStat.putInto(json);
            retVal = sample.callFunction(pluginId, "notifyAuthenticationStatus", json.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return retVal;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    因为getter和setter方法是在^{中定义的

        public class ChargeParamData {
    
    //for PluginId
    private static String pluginId;
    
    public static void setPluginId(String id) {
        pluginId = id;
        System.out.println("pluginId to set for Charge is " + pluginId);
    }
    
    public static String getPluginId() {
        System.out.println("pluginId to get for console test is " + pluginId);
        return pluginId;
    }
    }
    
    this is the code that uses the class
    
    public final class ChargeFacade {
    private static ChargeParamData chargeParam = ChargeParamData.getInstance();
    
    public static void chargePluginInit() {
        String pid = null;
    PluginDescriptor[] pdList = sample.listPlugin();
        pid = pdList[0].getId();
        createContext(pid);
    }
    
    private static void createContext(String pluginId) {
    
        ChargeParamData .setPluginId(pluginId);
        logger.info("Charge Service created for " + pluginId);
    }
    
    
    public static String notifyAuthenticationStatus(AuthenticationStatus authStat) throws DispatcherException {
        String pluginId = ChargeParamData .getPluginId(); // <  this part is null
        try {
            JSONObject json = new JSONObject();
            authStat.putInto(json);
            retVal = sample.callFunction(pluginId, "notifyAuthenticationStatus",
                    json.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return retVal;
    }
    }