黑马程序员技术交流社区
标题:
SetTreeDemo和泛型。<已解决>
[打印本页]
作者:
王德升
时间:
2012-6-9 23:10
标题:
SetTreeDemo和泛型。<已解决>
本帖最后由 王德升 于 2012-6-20 09:07 编辑
//第一段代码。
import java.util.*;
class TreeSetDemo
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();
ts.add(new Student("java01",53));
ts.add(new Student("java03",33));
ts.add(new Student("java04",13));
ts.add(new Student("java05",13));
Iterator it = ts.iterator();
while(it.hasNext())
{
Student stu = (Student)it.next();
System.out.println(stu.getName()+"...."+stu.getAge());
}
}
}
class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
public int compareTo(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象"); //2.
Student s = (Student)obj;
System.out.println(this.name+"....compare..."+s.name);
if(this.age>s.age)
return 1;
if(this.age==s.age)
//return 0;
return this.name.compareTo(s.name);
return -1;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
/*
D:\java0420\day14>javac TreeSetDemo.java
注: TreeSetDemo.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
D:\java0420\day14>java TreeSetDemo
java01....compare...java01
java03....compare...java01
java04....compare...java01
java04....compare...java03
java05....compare...java03
java05....compare...java04
java04....13
java05....13
java03....33
java01....53
1.为什么我编译java01和java01也比较了一次呢?
2.这里为什么要抛异常,而13天的ArrayList怎么这里没有抛呢?
*/
//第二个问题。
class Utils<QQ>// 1.
{
private QQ q; //2.
public void setA(QQ q) //3.
{
this.q = q;
}
public QQ getB()//4.
{
return q; // 5..
}
}
1.为什么这里放个QQ?
2.为什么出来个q?
3.为什么这里放QQ q?
4.为什么这里要搞QQ类型的?
5.为什么这里返回q
这5个请说的能让我知道来龙去脉,不要说那么浅。谢谢!
作者:
吴小铁你好
时间:
2012-6-9 23:31
本帖最后由 吴小铁你好 于 2012-6-9 23:35 编辑
这是我运行的结果,没有java01与java01的比较,楼主是不是搞错了,
java03....compare...java01
java04....compare...java01
java04....compare...java03
java05....compare...java03
java05....compare...java04
java04....13
java05....13
java03....33
java01....53
复制代码
第二个问题,因为你传入的是Object可能不是Student对象,所以要抛异常啊。
这个问题在张老师的java加强的泛型要讲到。这是泛型的一种运用,第一个泛型表示QQ为一种类型,这种类型为你任意传入值的类型,比如说你传入String那他就为String,这下面的QQ就都是表示这种类型,q为你传入的参数,setA为设置参数,需要传入值所以就有QQ(类型) q变量。4这QQ类型是返回类型,q为返回值。
作者:
孙峰
时间:
2012-6-9 23:31
第一问中,程序我运行的正常啊,没有java 01和java01又比较,你再运行试试。 至于2处跑异常,很明显就是输入的对象类型不正确,在这里抛出运行时异常,为了在编译时仍可以通过。可以不处理。
第二问中;是自定义泛型的例子,QQ表示引用类型,q 表示成员变量,其中 q 是QQ类型的数据。 只是用不同字母的关系。假如你把QQ换成 String ,q作为一个String 类型的变量,就容易理解了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2