2 ssummeraw ssummeraw 于 2013.01.16 13:43 提问

对一个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列表要加载到一个类吗?有谁知道这个类是调用什么函数呢?

3个回答

Baby_Bonnie
Baby_Bonnie   2013.01.16 16:12
已采纳
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());

         }
     }
}
yuan8222
yuan8222   2013.01.22 14:32
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就是一个集合.

cytown
cytown   2013.01.16 16:47

这个circles是用来存储数据的,同样这个MyPoint也是用来存储数据的,这样控制wallpaper上面运行时创造的点的位置内容等信息。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!