2015-05-08 3 views
2

Привет, я пытаюсь создать массив в префиксном размере (например, размером 10) в главном, а затем добавить элементы (например, 3 элемента) в массив, это сделает массив имеет 7 неиспользуемых пробелов, позже, я хочу написать метод, который обрезает неиспользованный размер.Инициализировать определенный размер для массива

Но как я могу создать массив с фиксированным размером, потому что, очевидно, мой конструктор не допустит эту операцию ниже.

*Bag<String> names = new Bag<String>(**10**);* 


public class Bag<T extends Comparable<T>> implements Iterable<T> { 
    private int MAX_ITEMS = 10; // initial array size 
    private int size; 
    private T[] data; 

    public Bag() { 
     data = (T []) new Comparable[MAX_ITEMS]; 
     size = 0; 
     } 

    public static void main(String[ ] args) { 
     Bag<String> names = new Bag<String>(); 
     names.add("Seattle"); 
     names.add("Chicago"); 
     names.add("New York"); 

     System.out.println(names.size()); 
     for (String name : names) 
      System.out.println(name); 

     names.trimToSize(); 
     System.out.println(names.size()); 
    } 
} 
+0

Это не является очевидным для меня, что это не допускается. Мой компилятор (Java8, Eclipse) принимает это. – CoronA

+0

@CoronA Поскольку мой конструктор пакетов не принимает никаких параметров – Robert

+0

Где ваш метод 'итератора()'. Этот код будет компилировать noy. –

ответ

3

Вы можете создать следующий метод в классе Utility и использовать его каждый раз, когда вам это нужно:

public static <T> T[] newArrayOf(T[] t, int len){ 
     return (T[]) Array.newInstance(t.getClass().getComponentType(), len); 
    } 
Смежные вопросы