我正在玩使用Mysql的Tomcat身份驗證。爲了促進這一點,我試圖模擬存儲在數據庫中的Tomcat用戶數據。所以我建立了一個TomcatUser類。如何將VARARG的內容複製到ArrayList中?
我已將用戶名和密碼存儲爲字符串,以便在測試過程中使生活變得輕鬆。安全性將在稍後實施。用戶的Tomcat角色存儲在一個ArrayList中,這樣我可以輕鬆地搜索和管理用戶的角色。我有幾個構造函數適用於不同的場景。
其中之一是使用String VARARG設置用戶可能擁有的許多Tomcat角色。我知道VARARG中的參數存儲在一個數組中。在這種情況下,字符串數組。我使用Collections.addAll()方法將VARARG數組的內容添加到對象的ArrayList中。
在測試類中,我從對象的實例化Iterator中得到一個NullPointerException,可能是因爲我的一些愚蠢的錯誤。但後來我是新的。以下是我的代碼,適用於模型類和測試。你能告訴我我做錯了什麼嗎?一般的任何提示或建議,將不勝感激。
該模型。
/*
* Class modeling user data for Tomcat.
*/
package tomcat;
import java.util.ArrayList;
import java.util.Collections;
public class TomcatUser
{
String tomcatUserName; //Field to store Tomcat user's name.
String tomcatUserPassword; //Field to store Tomcat user's password.
/*
* Field to store the Tomcat user's roles as an ArrayList. This allows for easy element checking.
*/
ArrayList<String> tomcatUserRoles;
/*
* Constructor intended for creating a roleless user. Not much use, but who knows.
*/
public TomcatUser(String tomcatUserName, String tomcatUserPassword)
{
super();
this.setTomcatUserName(tomcatUserName);
this.setTomcatUserPassword(tomcatUserPassword);
}
/*
* Constructors for instantiating for general use.
* Three constructors are provided to provide options for instantiation.
*/
public TomcatUser(String tomcatUserName, ArrayList<String> tomcatUserRoles)
{
super();
this.setTomcatUserName(tomcatUserName);
this.setTomcatUserRoles(tomcatUserRoles);
}
public TomcatUser(String tomcatUserName, String... tomcatUserRoles)
{
super();
this.setTomcatUserName(tomcatUserName);
}
/*
*
*/
/*
* Constructors intended for adding a new user to the database.
* Three constructors are provided to provide options for instantiation.
*/
public TomcatUser(String tomcatUserName, String tomcatUserPassword, ArrayList<String> tomcatUserRoles)
{
this(tomcatUserName, tomcatUserPassword);
this.setTomcatUserRoles(tomcatUserRoles);
}
/*
*
*/
/*
* Standard setters and getters.
*/
/**
* @return the tomcatUserName
*/
public String getTomcatUserName() {
return tomcatUserName;
}
/**
* @param tomcatUserName the tomcatUserName to set
*/
public void setTomcatUserName(String tomcatUserName) {
this.tomcatUserName = tomcatUserName;
}
/**
* @return the tomcatUserPassword
*/
public String getTomcatUserPassword() {
return tomcatUserPassword;
}
/**
* @param tomcatUserPassword the tomcatUserPassword to set
*/
public void setTomcatUserPassword(String tomcatUserPassword) {
this.tomcatUserPassword = tomcatUserPassword;
}
/**
* @return the tomcatUserRoles
*/
public ArrayList<String> getTomcatUserRoles() {
return tomcatUserRoles;
}
/**
* @param tomcatUserRoles the tomcatUserRoles to set
*/
public void setTomcatUserRoles(ArrayList<String> tomcatUserRoles) {
this.tomcatUserRoles = tomcatUserRoles;
}
/*
*
*/
/*
* Setter to handle input options from matching constructors, and to provide options for setting tomcatUserRoles field.
*/
public void setTomcatUserRoles(String[] newTomcatUserRoles)
{
Collections.addAll(this.tomcatUserRoles, newTomcatUserRoles);
}
/*
*
*/
/*
* Method to add a role to the object.
*/
public void addTomcatUserRole (String newTomcatUserRole)
{
this.tomcatUserRoles.add(newTomcatUserRole);
}
public Boolean hasTomcatRole (String checkTomcatRole)
{
return this.tomcatUserRoles.contains(checkTomcatRole);
}
}
和測試類。
package tomcat;
import java.util.ArrayList;
import java.util.Iterator;
public class TomcatUserTest
{
static ArrayList<String> testTomcatRoles = new ArrayList<String>();
/**
* @param args
*/
public static void main(String[] args)
{
for (Integer iterator = 1; iterator <4 ; iterator++)
{
testTomcatRoles.add("testTomcatRole" + iterator.toString());
}
TomcatUser testTomcatUser01 = new TomcatUser("testUser01", "testPassword01");
System.out.print("testTomcatUser01 contents: ");
System.out.print(testTomcatUser01.getTomcatUserName() + " " + testTomcatUser01.getTomcatUserPassword());
System.out.println();
TomcatUser testTomcatUser02 = new TomcatUser("testUser02", testTomcatRoles);
System.out.print("testTomcatUser02 contents: ");
System.out.print(testTomcatUser02.getTomcatUserName() + " ");
Iterator<String> testTomcatUser02Iterator = testTomcatUser02.getTomcatUserRoles().iterator();
while (testTomcatUser02Iterator.hasNext())
{
System.out.print(testTomcatUser02Iterator.next());
if (testTomcatUser02Iterator.hasNext())
{
System.out.print(" ");
}
}
System.out.println();
TomcatUser testTomcatUser03 = new TomcatUser("testTomcatUser03", "testPassword03", testTomcatRoles);
System.out.print("testTomcatUser03 contents: ");
System.out.print(testTomcatUser03.getTomcatUserName() + " " + testTomcatUser03.getTomcatUserPassword() + " ");
Iterator<String> testTomcatUser03Iterator = testTomcatUser03.getTomcatUserRoles().iterator();
while (testTomcatUser03Iterator.hasNext())
{
System.out.print(testTomcatUser03Iterator.next());
if (testTomcatUser03Iterator.hasNext())
{
System.out.print(" ");
}
}
System.out.println();
TomcatUser testTomcatUser04 = new TomcatUser("testTomcatUser04", "testRole1", "testRole2", "testRole3");
System.out.print("testTomcatUser04 contents: ");
System.out.print(testTomcatUser04.getTomcatUserName() + " ");
Iterator<String> testTomcatUser04Iterator = testTomcatUser04.getTomcatUserRoles().iterator();
while (testTomcatUser04Iterator.hasNext())
{
System.out.print(testTomcatUser04Iterator.next());
if (testTomcatUser04Iterator.hasNext())
{
System.out.print(" ");
}
}
}
}
我顯然已經過了太久,應該去睡覺。謝謝。 – cyotee