问题描述
- 对一个list中一个类的困扰
-
我参考的这个文档学习的livewallpaper。这里我有一些地方不太明白。
教程中的示例代码中有个MyPoint类public class MyPoint { String text; private int x; private int y; public MyPoint(String text, int x, int y) { this.text = text; this.x = x; this.y = y; } }
然后又创建了一个MyWallpaperService类。这个类里面有一个像这样的代码行
private List<MyPoint> circles; private Paint paint = new Paint(); private int width; int height; private boolean visible = true; private int maxNumber; private boolean touchEnabled; public MyWallpaperEngine() { SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(MyWallpaperService.this); maxNumber = Integer .valueOf(prefs.getString("numberOfCircles", "4")); touchEnabled = prefs.getBoolean("touch", false); circles = new ArrayList<MyPoint>(); paint.setAntiAlias(true); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(Paint.Join.ROUND); paint.setStrokeWidth(10f); handler.post(drawRunner); }
代码的部分还有这么一句
private List<MyPoint> circles;
这就是我不明白的地方。List会在circles传递什么?这个list列表要加载到一个类吗?有谁知道这个类是调用什么函数呢?
解决方案
private List<MyPoint> circles;
申明 circles 是一个 MyPoint 类型的列表。
circles = new ArrayList<MyPoint>();
上面这一行把 MyPoint 类型的 ArrayList 对象分配给 List 类型中的 Reference 对象变量。
这被称为 Interface Polymorphism。
List是一个接口,作为 ArrayList 一个具体的类,来实现列表。
public class Dog{
private String dName;
priavet int dAge;
public Dog(String dName, String dAge){
this.dName = dName;
this.dAge = dAge;
}
public String getDName(){
return this.dName;
}
public String getDName(){
return this.dAge;
}
}
public class Test{
public static void main(String[] args){
List<Dog> dAList = new ArrayList<Dog>();
dAList.add(new Dog("Tommy",5));
dAList.add(new Dog("Stark",2));
for(Dog d : dAList){ // Iterating over the List of Dog objects
System.out.println(d.getDName());
System.out.println(d.getDAge());
}
}
}
解决方案二:
private List<MyPoint> circles;//声明circles
circles = new ArrayList<MyPoint>();//初始化(在内存开辟一个单元)一个只能放MyPoint类的对象
这个代码声明了一个List类circles,这个类专门用来放MyPoint对象的.这个在的书里应该是讲到泛型这一章节.举个例子:
private List fruits;
这行代码声明了一个List类fruits,那么这个List里面你可以放apple类,banana类,orange类等等其他水果,或者其他的类,这个List就好比一个篮子,可以随便放,但是这样随便放就会带来很混乱的效果,于是java引入了泛型,规定了这个篮子只能放apple类,那么声明就如下所示:
private List<Apple> fruits;
这样,这个fruits类就只能添加Apple对象了.
你可以去参考下java api里面有关List这一小节的,里面讲的会让你知道List的用法的,List就是一个集合.
解决方案三:
这个circles是用来存储数据的,同样这个MyPoint也是用来存储数据的,这样控制wallpaper上面运行时创造的点的位置内容等信息。
时间: 2024-09-07 05:59:27