2012-06-21 4 views
0

Привет, я работаю над google NewsReader Применение с использованием SAX. Здесь я использую методы getters и setter s для получения данных.
Но у меня есть вопрос, что я могу добавить значение в методы setters, но не смог попасть в методы getters, я не знаю, что такое ошибка, Пожалуйста, дайте мне знать, где я делаю ошибку.Проблема с геттерами и сеттерами Методы

public class Item implements Serializable { 

private String title; 
private String description; 
private String link; 
private String date; 

public Item() { 
    setTitle(null); 
    setDescription(null); 
    setLink(null); 
    setDate(null); 
} 

public String getTitle() { 
    System.out.println(" value of the Gettitle ===============> "+ title); 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
    System.out.println("value of the settitle =============>"+this.title); 
} 

Выход в LogCat:

value of the settitle =============>Oracle CEO Ellison to Buy Most of Hawaiian Island Lanai - Bloomberg 

value of the Gettitle ===============> null 

Здесь я получил значение из item.getTitle().length() равно нулю.

Edit:

public void endElement(String uri, String localName, String qName) 
     throws SAXException { 
    // TODO Auto-generated method stub 
    //super.endElement(uri, localName, qName); 

    if(localName.equalsIgnoreCase("title")) { 

     if(inItem) { 
      //System.out.println("value of the content=========>"+content.toString()); 
      item.setTitle(content.toString()); 
     } else { 
      channel.setTitle(content.toString()); 
     } 
    } 

Item item = new Item(); 



     for (int i = 0; i < item.getTitle().length(); i++) { 

      HashMap<String, String> map = new HashMap<String, String>(); 

      map.put("title", item.getTitle().valueOf(i)); 
      map.put("pubdate", item.getDate().valueOf(i)); 
      map.put("desc", item.getDescription().valueOf(i)); 

      items.add(map); 

     } 
+5

и как вы называете getter & setters, отправьте этот код –

+0

внутри конструкторов, вы не должны вызывать сеттеры и геттеры или любой метод, если они переопределяемы. – Genzer

+0

Можете ли вы отправить назначение значения для метода установки – Kushan

ответ

1

Я сильно подозреваю, что вы назвали getTitle() на другом экземпляре Item, чем тот, который вы называется setTitle() на:

Item item1 = new Item(); 
item1.setTitle("foo"); 

// Some other code 

Item item2 = new Item(); 
String title = item2.getTitle(); // This will return null 
+0

У меня есть один и тот же объект для getTitle() и SetTitle(). отредактированный код. –

+0

@RahulPatel: Нет, вы этого не сделали - в коде, где вы используете 'getTitle()', вы получили 'Item item = new Item()' как раз перед тем, как в моем ответе. –

+0

проверить условие цикла для (int i = 0; i

0

Это может если вы используете 2 разных объекта для set и get. Проверьте, звоните ли вы setter и getter на том же объекте.

РЕДАКТИРОВАТЬ

объект используется для установки заголовка т.е. item.setTitle(content.toString()); не то же самое, как item объекта, созданного непосредственно перед контуром for. Вы воссоздаете/повторно инициализируете объект item с помощью Item item = new Item() перед циклом for. Создайте глобальный объект item и создайте его только один раз.

+0

@iozee Мне случается написать ответ, когда @ jon уже отправил свой ответ. Это происходит. Думаю, это не БОЛЬШОЕ преступление. –

+0

Отредактированный пост. –

+0

У меня есть тот же объект для getTitle() и SetTitle(). Проверьте мой отредактированный код –

0

Попробуйте это,

public class Item implements Serializable { 

private String title; 
private String description; 
private String link; 
private String date; 

public Item() { 
    setTitle(null); 
    setDescription(null); 
    setLink(null); 
    setDate(null); 
} 

public String getTitle() { 
    System.out.println(" value of the Gettitle ===============> "+ title); 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
    System.out.println("value of the settitle =============>"+this.title); 
} 

public static void main(String[] args) { 

Item i = new Item(); 
i.setTitle("War-Craft"); 

    i.getTitle(); 
} 
} 

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

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