[英]Is there a fixed length generic array object in Java?
我正在尋找一種方法來將不同的數據類型存儲在一個固定長度的集合中,這樣我就可以通過索引設置/獲取元素。 最好的方法是什么? 謝謝!
編輯:這應該工作嗎?
private List t=new ArrayList();
t.set(2,"test");
我明白了:java.lang.IndexOutOfBoundsException:Index:2,Size:0
這有用嗎?
private List t=new ArrayList();
t.set(2,"test");
不,不應該。 如果使用超出列表末尾的位置調用set
,則List不會自動增長。 (見javadoc 。)
如果你想做那種事情,你必須先用null
元素填充List; 例如
private List t=new ArrayList();
for (int i = 0; i < LIMIT; i++) {
t.add(null);
}
...
t.set(2,"test");
但我還要重申其他各種答案所提出的觀點。 您應該編寫一個類,並以類型安全的方式執行此操作。 把東西塞進Object[]
或List<Object>
...並希望你得到正確的索引和類型......給你脆弱的代碼。 這是不好的做法 。
你可以用List做這樣的事情。 它通過索引獲取/設置方法。 我不明白為什么固定長度在這里很重要。
您始終可以在自己設計的類中精確地封裝所需的行為。 您可以使用支持陣列為您管理它,但您必須自己完成所有工作。
你不能制作一個Object
數組嗎? 這意味着除了基本類型(int,char,boolean等)之外的所有內容; 如果你想存儲它們,你必須將它們包裝在相應的Object Wrapper類(整數,字符,布爾等)中。所以像:
mult_type[0] = "A String";
mult_type[1] = new Integer(42);
mult_type[2] = new Long(7149994000);
等等。 雖然mult_type [i]是定義的對象,但存儲在那里的條目可以是Object的任何子類。 當您想要檢索它們時,您可以檢查它們以找出它們實際屬於哪個類。 有幾種方法可以做到這一點,一種是使用“instanceof”運算符,如下所示:
if (mult_type[i] instanceof Integer) {
Integer anInteger = (Integer)mult_type[i];
int anInt = anInteger.intValue();
}
請注意,在檢索對象時,必須將對象“強制轉換”為其實際類。
你需要一個Javabean。 創建一個類,它代表所有這些不同屬性的整體畫面。 例如,一個User
用id
, name
, gender
, dateOfBirth
, active
等
public class User {
private Long id;
private String name;
private Gender gender;
private Date dateOfBirth;
private Boolean active;
// Add/generate c'tor(s)/getters/setters/equals and other boilerplate.
}
這樣,您最終可以獲得清晰且可重復使用的抽象。
User user = new User();
user.setName("John Doe");
user.setGender(Gender.MALE);
// ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.