2009-12-28 52 views

回答

17

當然。您可以將任何成員放入您喜歡的對象中。例如,這個類存儲一個字符串和11個整數。整數存儲在一個數組中。如果你知道將會有11個(或明顯的任何固定數字),這往往是優於存儲11個獨立的int成員。

public class MyObject { 
    private String text; 
    private int[11] numbers = new int[11]; 

    public String getText() { return text; } 
    public void setText(String text) { this.text = text; } 
    public int getNumber(int index) { return numbers[index]; } 
    public void setNumber(int index, int value) { numbers[index] = value; } 
} 

所以你可以編寫一些代碼:

MyObject ob = new MyObject(); 
ob.setText("Hello world"); 
ob.setNumber(7, 123); 
ob.setNumber(3, 456); 
System.out.println("Text is " + ob.getText() + " and number 3 is " + ob.getNumber(3)); 

注:陣列中的Java是從零開始。這意味着大小爲11的數組在索引0到10之間包含元素。

如果11是數字和文本的含義和用法的固定數字,您還沒有真正指定。取決於可以完全改變如何最好地做到這一點的答案。

+2

這是12個數字:P – 2009-12-28 01:01:54

+5

int x [5]是5個數字,所以它不是12. – JonH 2009-12-28 01:06:35

+0

@Josh Stodola,沒有進攻,但你在說什麼?使用'new int [11]'初始化一個int數組''明確地只保存了11個int基元,因爲它是構造函數,而不是對數組中位置的引用。而cletus沒有使用可變參數類型的方法或構造函數,所以總而言之,我對你的兩條評論感到困惑。 – delfuego 2009-12-28 01:40:32

2

是 - 使12名私有數據成員,你就在那裏。

他們是否屬於同一個對象是一個不同的問題。

0

是的。你將不得不創建這個類。有可能的。

1

你可以把它們放入數組Object S以及:

private Object[] mixedObjs = new Object[12]; 
+2

Autoboxing是邪惡的。 – bmargulies 2009-12-28 02:53:16

+1

他不需要使用自動裝箱來將int整理到Object []中。 – 2009-12-28 04:36:09

0

創建實現包含字符串和11位的整數對象的類:

public class StringAndInt extends Object 
{ 
    private int[] user = new int[11]; 
    private String string = ""; 

    public StringAndInt(String s, int[] i){ 
     user = i; 
     string = s; 
    } 
    public StringAndInt setInt(int[] i){ 
     number = i; 
     return this; 
    } 
    public StringAndInt setString(String s){ 
     string = s; 
     return this; 
    } 
    public int getInt(){ 
     return user; 
    } 
    public String getString(){ 
     return string; 
    } 
} 
+0

您的解決方案與上面用戶cletus建議的解決方案有什麼不同? (也沒有必要直接擴展Object,所有的Java類根據定義擴展Object。) – 2017-03-29 15:50:38

相關問題