java-对一个list中一个类的困扰

问题描述

对一个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

java-对一个list中一个类的困扰的相关文章

VC ADO 怎么实现复制一个数据库中一个表的某些字段到另一个数据库的表中?

问题描述 VC ADO 怎么实现复制一个数据库中一个表的某些字段到另一个数据库的表中? 想从一个Access数据库中的a表中提取需要的字段复制到另一个数据库的b表中,有大神知道怎么弄吗 解决方案 循环读取第一个表的内容,然后插入第二个表.http://www.cnblogs.com/spatial/archive/2009/07/18/1526255.html 解决方案二: 循环复制,但是需要考虑a与b表是否一样,有什么对应关系,不能乱复制 解决方案三: 如何从一个数据库复制表的结构到另一个数据

java线程问题-javs中Thread类 Runnable 类 run方法 start方法

问题描述 javs中Thread类 Runnable 类 run方法 start方法 javs中Thread类 Runnable 类 run方法 start方法 这两个类 两个方法之间的联系是如何的 解决方案 Thread 类和 runnable类中都是需要重写run方法, 然后都是通过start()方法来启动线程的. Thread可以将runnable接口作为参数接收,然后在启动,例如 new Thread(new runnable(){ run(){} }) 解决方案二: 在实际开发中一个多

关于JAVA核心技术卷II中一个例子的问题,大家一起看下[

问题描述 本人在看这个例子,发现一个问题,也就是在写入文件存在问题,导致它读出的时候不是按我们设想的那样,大家看看问题存在哪,现附上源代码: import java.io.*;import java.util.*;public class RandomFileTest {public static void main(String[] args) throws IOException {Empolyee[] staff = new Empolyee[3];staff[0] = new Empol

享一个plpgsql中一个语句不同写法对于性能严重影响的问题(目前还找不到函数到底是怎样个调用法)

最近在测试cpu的avx指令集时无意中发现一个因为语句写法不同,性能相差极大的问题 一.定义两个测试函数 create or replace function md5_js() returns text as $$ declare v_i integer; v_md5 varchar; begin for v_i in 1..10000000 loop v_md5:=md5(random()::text); end loop; return 'ok'; end; $$ language plpg

举例讲解Java的Jackson库中ObjectMapper类的使用_java

ObjectMapper类是Jackson库的主要类.它提供一些功能将转换成Java对象匹配JSON结构,反之亦然.它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写. 类声明以下是org.codehaus.jackson.map.ObjectMapper类的声明: public class ObjectMapper extends ObjectCodec implements Versioned 嵌套类 S.N. 类 & 描述 1 static class O

怎样从一个DLL中导出一个C++类

原文作者:Alex Blekhman    翻译:朱金灿   原文来源: http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx 译文来源:http://blog.csdn.net/clever101     C++语言毕竟能和Windows DLLs能够和平共处.     介绍          自从Windows的开始阶段动态链接库(DLL)就是Windows平台的一个组成部分.动态链接库允许在一个独立的模块中封装一系列

方法-c#中一个脚本调用另一个脚本的函数

问题描述 c#中一个脚本调用另一个脚本的函数 除了public static外还用什么方法,可以的话,举一个简单的例子 解决方案 不同的命名空间要先using比如一个程序,这么写的namespace WindowsFormApplication1{ public class Form1 : Form { ... }}它要调用namespace Library1{ class Class1 { public void 方法() { ... } }}里面的函数,就需要带上命名空间:在第一个代码头上加

java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?

问题描述 1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码.3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵! 解决方案 引用1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?这几个对象调用的当然是同一段代码了.jvm中有一个ja

java 接口 接口实现-Java中一个类如何实现多个接口中同名同参返回值不同的方法?

问题描述 Java中一个类如何实现多个接口中同名同参返回值不同的方法? 如:` class A implements Interface1,Interface2{ //这里该怎么写呢? } interface Interface1{ public void method(); } interface Interface2{ public int method(); } 解决方案 class A implements Interface1,Interface2{ //直接写啊 public voi