2013-11-15 2 views
0
import java.util.*; 

import java.io.*; 

public class Test extends ArrayList 
{ 

    ArrayList<String> list = new ArrayList<String>(); 

    public static void main(String[] args) 
    { 
     new Test().add(); 
     new Test().contains(); 
    } 



    public boolean add(){ 
     list.add("cat"); 
     System.out.println(list); 
     return true; 
    } 

    public void contains(){ 
     if (list.contains("cat")){ 
      System.out.println("list contains cat"); 
     } 
     else{ 
      System.out.println("list doesn't contain cat"); 
     } 

    } 

} 

Почему нет результата [cat] list содержит cat? Он продолжает давать мне [cat] список не содержит кота. Первый метод работает правильно, но почему он не второй? Спасибо ... Я на самом деле новичок в этом.Как мне вызвать метод в java из main?

+0

Какова цель наследования 'ArrayList'? – Masudul

ответ

7

Это потому, что вы вызываете оба метода с разными экземплярами.

new Test().add(); // Creates 1 instance 
new Test().contains(); // creates another instance 

Для вызова обоих методов необходимо использовать один и тот же экземпляр.

Test t = new Test(); 
t.add(); 
t.contains(); 

Каждый новый Test объект, созданный с помощью new Test() имеет свою собственную копию list. Вот почему, когда вы вызываете с другим экземпляром, его все еще пусто, так как list первого экземпляра был добавлен только со строкой «cat».

+0

спасибо, это имеет смысл !! – user2995344

1

потому что аррайалист не является статичным, поэтому вы создаете два экземпляра приложения, в которых каждый имеет свою собственную переменную списка.

установить переменную статическую и она будет работать.

static ArrayList<String> list = new ArrayList<String>(); 

Но лучше использовать один и тот же экземпляр для вызова два раза.

Test test = new Test(); 
test.add(); 
test.contains(); 
1

Вы звоните new Test() дважды. Вы создаете два экземпляра. Вы добавляете к первому и проверяете на contains на втором (недавно созданном).

0

Вы создаете два экземпляра теста. Затем вы создаете два отдельных экземпляра «списка». Сначала со строкой «cat», а второй пустой.

0

Почему вы хотите расширить ArrayList? Может быть, вы можете попробовать вот так ...

import java.util.ArrayList; 

public class Test { 

    public static void main(String[] args) { 
     ArrayList<String> list = new ArrayList<String>(); 
     list.add("cat"); 
     System.out.println(list); 

     if (list.contains("cat")) { 
      System.out.println("list contains cat"); 
     } else { 
      System.out.println("list doesn't contain cat"); 
     }  

    } 
} 
Смежные вопросы