gpt4 book ai didi

java:变量初始化

转载 作者:行者123 更新时间:2023-11-30 09:24:54 26 4
gpt4 key购买 nike

我正在尝试创建一个包含从服务器登录和注销的函数的类,服务器的 ip 地址在函数的开头以静态方式定义,如下所示:

private static String loginURL = "http://192.168.1.5/android_login_api/"

我想知道如何根据条件初始化 loginURL。例如:

if(this.isConnectedToServer("192.168.1.5", 500)) {
private static String loginURL = "http://192.168.1.5/android_login_api/";
}

if(this.isConnectedToServer("192.168.1.9", 500)) {
private static String loginURL = "http://192.168.1.9/android_login_api/";
}

我想将 loginURL 作为参数传递给此类的每个函数,然后当我调用它们时,我使用此条件来定义 ip 地址,但我认为这太愚蠢了。

这是我的类(class):

public class UserFunctions {

private JSONParser jsonParser;

private static String loginURL = "http://192.168.1.5/android_login_api/";
private static String mplayerURL = "http://192.168.1.5/android_mplayer_api/";
private static String registerURL = "http://192.168.1.5/android_login_api/";

private static String login_tag = "login";
private static String register_tag = "register";
private static String delete_tag = "delete";
private static String update_tag = "update";
private static String music_tag = "music";
private static String getusers_tag = "getusers";


// constructor
public UserFunctions(){
jsonParser = new JSONParser();
}

/**
* function make Login Request
* @param email
* @param password
* */
public JSONObject loginUser(String email, String password){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", login_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
// return json
Log.i("JSON", json.toString());
return json;
}
public JSONObject deleteUser(String email){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", delete_tag));
params.add(new BasicNameValuePair("email", email));
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
// return json
Log.i("JSON", json.toString());
return json;
}

public JSONObject updateUser(String email, String field, String value){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", update_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("field", field));
params.add(new BasicNameValuePair("value", value));
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
// return json
Log.i("JSON", json.toString());
return json;
}



public boolean isConnectedToServer(String url, int timeout) {
try{
URL myUrl = new URL(url);
URLConnection connection = myUrl.openConnection();
connection.setConnectTimeout(timeout);
connection.connect();
return true;
} catch (Exception e) {
// Handle your exceptions
return false;
}
}

/**
* function make Login Request
* @param name
* @param email
* @param password
* */
public JSONObject registerUser(String name, String email, String mode, String password){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", register_tag));
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("mode", mode));
params.add(new BasicNameValuePair("password", password));

// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
// return json
return json;
}

public JSONObject PlayMusic(String name){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", "play"));
params.add(new BasicNameValuePair("name", name));
// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
// return json
return json;
}

public JSONObject ChangeVol(String volume){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", "volume"));
params.add(new BasicNameValuePair("volume", volume));
// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
// return json
return json;
}

public JSONObject StopMusic(){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", "stop"));
// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
// return json
return json;
}


public JSONObject ParcourirMusic(){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", "parcourir"));
// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
// return json
return json;
}


/**
* Function get Login status
* */
public boolean isUserLoggedIn(Context context){
DatabaseHandler db = new DatabaseHandler(context);
int count = db.getRowCount();
if(count > 0){
// user logged in
return true;
}
return false;
}

/**
* Function to logout user
* Reset Database
* */
public boolean logoutUser(Context context){
DatabaseHandler db = new DatabaseHandler(context);
db.resetTables();
return true;
}

public void ReadMail(){

try{
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "rami.mtiri@gmail.com", "pass");
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);


SearchTerm term = new SearchTerm() {
@Override
public boolean match(Message mess) {
try {
return mess.getContent().toString().toLowerCase().indexOf("boston") != -1;
} catch (IOException ex) {
// Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (MessagingException ex) {
// Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
};

Message[] searchResults = inbox.search(term);
for(Message m:searchResults){
Log.e("mail",m.getFrom()[0].toString() );
System.out.println("MATCHED: " + m.getFrom()[0]);

}
} catch (Exception e) {

}

}

}

任何人都可以使用我的代码给我一个完整的解决方案吗,我是 Java 的新手,不关心函数或变量是否是静态的,我想要的只是按条件初始化 IP 地址。我在每个其他类中调用此类的函数,因此在每个类中进行测试是不礼貌的。我保留它作为最后的手段

最佳答案

这个

if(this.isConnectedToServer("192.168.1.5", 500))
{
private static String loginURL = "http://192.168.1.5/android_login_api/";
}
if(this.isConnectedToServer("192.168.1.9", 500))
{
private static String loginURL = "http://192.168.1.9/android_login_api/";
}

不是有效的 java 代码,假设上述语句位于类的声明中(private static 修饰符的使用需要这种情况)。

字段不能有条件地声明。事实上,大多数语句(if、while、for 等)在函数之外都是非法的。您可以在类体内静态地做的唯一一件事就是声明该字段并为其赋予一个初始化值。

private static String loginURL; //no initialization yet as you don't have an instance to call isConnectedToServer() on

现在,解决您的问题非常困难,因为正如 Adrian 所指出的,您正在尝试使用非静态方法 (isConnectedToServer()) 来确定静态行为(登录网址)。这没有意义。您必须使 loginURL 成为非静态的或使 isConnectedToServer() 成为静态的。

您可能想要第一个选项。

由于初始化条件的性质,在构造函数中初始化 loginURL 会更容易,这几乎与静态初始化它完全相同。以下是此类设置的骨架示例:

class Example
{
private String loginURL; //non-static, no initialization

public Example()//construcutor
{
//run conditions normally
if(this.isConnectedToServer("192.168.1.5", 500))
{
loginURL = "http://192.168.1.5/android_login_api/";
}
//you might want to use else if here
if(this.isConnectedToServer("192.168.1.9", 500))
{
loginURL = "http://192.168.1.9/android_login_api/";
}
//if neither if starement executes, loginURL is null.
}
}

如果您确实出于任何原因希望功能是静态的,请将初始化代码移至静态 block :

class StaticExample
{
private static String loginURL;

//isConnectedToServer must be declared static in order for this to work!
//I believe your current function can be made static without changing its code
public static boolean isConnectedToServer()
{
...
}

static
{
if(isConnectedToServer("192.168.1.5", 500))
{
loginURL = "http://192.168.1.5/android_login_api/";
}
//you might want to use else if here
if(isConnectedToServer("192.168.1.9", 500))
{
loginURL = "http://192.168.1.9/android_login_api/";
}
//if neither if starement executes, loginURL is null.
}

关于java:变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15490946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com