解决方案 »
- 在layout下面的xml中编辑控件的时候光标胡乱显示 求助!!!!
- 急 求教如何在android 中调用ping命令
- 支持Vedio
- 怎样判断一个点在矩形内?
- android 录音文件无法播放
- 一个独立的照相Activity,另一个Activity调用没反应,求救!!!
- 请教个Android的问题,用AudioTrack播放音频的左右数据排列问题????????????????????????????
- ListView动态加载网络图片问题
- 怎么转载别人写的博客??
- Android TextView中大量文字的排版问题
- Eclipse 中DDMS报错
- 标题栏半透明,并能看到下面的信息,怎么做?
BookContent.Book book;
book = BookContent.ITEM_MAP.get(getArguments().getInt(ITEM_ID));
第二句提示Type mismatch: cannot convert from String to BookContent.Book 我也是醉了
map不识别。
先给个自动调用的例子,例如:
System.out.println();这个可以自动调用,但是他是定好的。
可以看源码:(当然还有很多基础类型的重载) public void println(Object o) {
println(String.valueOf(o));
}可见,对象类型之所以会自动打印,是他转为了字符串形势,然后就调用了toString方法1、而你的代码自定义的Book类型仅仅是给map添加而已,map里没有自动转为String类型的设计。所以也就无法调用toString
要自己手动写出来
2、其次,如果可以自动输出toString会有歧义。
ITEM_MAP.put(book.id, book);这里book到底是要加入对象,还是加入toString的结果?
系统怎么知道?总之人为的加入toString是个好习惯!不要总期待自动实现。而且手动加入,给其他人的阅读性也会更好
import java.util.*;/**
* Java 8.
*
*
*
* Created by prd on 2015/2/8.
*/
public class BookContent {
public static class Book{ public Integer id;
public String title;
public String desc;
public Book(Integer id,String title,String desc){
this.id = id;
this.title = title;
this.desc = desc;
}
@Override
public String toString() {
return new StringJoiner(",","[","]").add(this.id.toString()).add(this.title).add(this.desc).toString();
}
public String getTitle(){
return this.title;
}
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public void setTitle(String title) {
this.title = title;
} public String getDesc() {
return desc;
} public void setDesc(String desc) {
this.desc = desc;
} } public static List<Book> ITEMS = new ArrayList<Book>();
public static Map<Integer,String> ITEM_MAP = new HashMap<Integer,String>(); public static void addItem(Book book){
ITEMS.add(book);
ITEM_MAP.put(book.id, book.getTitle());
} public static void main(String[] args) {
addItem(new Book(1,"疯狂java讲义","一本全面深入的java学习图书,已被多家高校选做教材"));
addItem(new Book(2,"疯狂android讲义","android学习者的首选图书,常年占据京东、当当、AMAZON3大网站的榜首"));
addItem(new Book(3,"轻量级JAVAEE企业应用实战","全面介绍JAVA EE的开发框架"));
System.out.println("--------------LIST-输出对象-----------------");
ITEMS.forEach(System.out::println);
System.out.println("--------------MAP--只输出名字--------------------");
ITEM_MAP.forEach((key,value)-> System.out.println("key:"+key+",value:"+value));
}
}
import java.util.*;/**
* Java 8.
*
*
*
* Created by prd on 2015/2/8.
*/
public class BookContent {
public static class Book{ public Integer id;
public String title;
public String desc;
public Book(Integer id,String title,String desc){
this.id = id;
this.title = title;
this.desc = desc;
}
@Override
public String toString() {
return "["+this.id.toString()+","+this.title+","+this.desc+"]";
// [-- java 8] return new StringJoiner(",","[","]").add(this.id.toString()).add(this.title).add(this.desc).toString();
} public String getTitle(){
return this.title;
}
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public void setTitle(String title) {
this.title = title;
} public String getDesc() {
return desc;
} public void setDesc(String desc) {
this.desc = desc;
} } public static List<Book> ITEMS = new ArrayList<Book>();
public static Map<Integer,String> ITEM_MAP = new HashMap<Integer,String>(); public static void addItem(Book book){
ITEMS.add(book);
ITEM_MAP.put(book.id, book.getTitle());
} public static void main(String[] args) {
addItem(new Book(1,"疯狂java讲义","一本全面深入的java学习图书,已被多家高校选做教材"));
addItem(new Book(2,"疯狂android讲义","android学习者的首选图书,常年占据京东、当当、AMAZON3大网站的榜首"));
addItem(new Book(3,"轻量级JAVAEE企业应用实战","全面介绍JAVA EE的开发框架"));
System.out.println("--------------LIST-输出对象-----------------");
//[-- java 8] ITEMS.forEach(System.out::println);
for (int i = 0; i < ITEMS.size(); i++) {
System.out.println(ITEMS.get(i));
}
System.out.println("--------------MAP--只输出名字--------------------");
//[-- java 8] ITEM_MAP.forEach((key,value)-> System.out.println("key:"+key+",value:"+value));
for (Map.Entry<Integer,String> m : ITEM_MAP.entrySet()) {
System.out.println("key:"+m.getKey()+",value:"+m.getValue());
}
}
}
定义类型和保存类型不匹配。
Book重写tostring方法,改BookContent.Book.toString();