import java.util.*;
class Apple
{
private static long counter;
private final long id=counter++;
public long id(){return id;}
}
class Orange{}
public class ApplesAndOrangesWithGenerics{
public static void main(String[] args)
{
ArrayList<Apple> apples=new ArrayList<Apple>();//<>括起来的叫做类型参数。
for(int i=0;i<3;i++)
apples.add(new Apple());
//apples.add(new Orange());//compile-time error
for(int i=0;i<apples.size();i++)
System.out.println(apples.get(i).id());//0 1 2
for(Apple c : apples)
System.out.println(c.id());
}
}
/* output:
0
1
2
0
1
2*/
为什么输出的结果是这样,我觉得应该是0 1 2 3 4 5.因为counter是static类型的变量。java泛型
class Apple
{
private static long counter;
private final long id=counter++;
public long id(){return id;}
}
class Orange{}
public class ApplesAndOrangesWithGenerics{
public static void main(String[] args)
{
ArrayList<Apple> apples=new ArrayList<Apple>();//<>括起来的叫做类型参数。
for(int i=0;i<3;i++)
apples.add(new Apple());
//apples.add(new Orange());//compile-time error
for(int i=0;i<apples.size();i++)
System.out.println(apples.get(i).id());//0 1 2
for(Apple c : apples)
System.out.println(c.id());
}
}
/* output:
0
1
2
0
1
2*/
为什么输出的结果是这样,我觉得应该是0 1 2 3 4 5.因为counter是static类型的变量。java泛型
解决方案 »
- 诡异的Java语法,下面这句话神马意思?
- 打印问题,拜托大家了
- java swing
- JAVA初学者提问,请帮帮解释下一些问题!
- java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state
- java的运行
- 过年了,散分,一个简单的问题,希望大家帮忙解决一下^_^
- 亚历士多德曾经说:“给我一个支点,我将撬动地球!”,为什么我仅仅只是点击了一下run的按钮,整个地球就不见了?
- 北京的程序员哥们,小菜向你们打听个事。。。。
- 关于WebSphere3.0的问题
- 今天面试的时候被问到正则表达式引擎是怎么实现的
- 《急急急》伊朗的夏令时是从什么时候开始?
counter:1
id:0
counter:2
id:1
counter:3
id:2两个for循环是一样的,输出结果可定是一样的
package com.nyohh.test;import java.util.ArrayList;public class ApplesAndOrangesWithGenerics
{
public static void main(String[] args)
{
ArrayList<Apple> apples = new ArrayList<Apple>();// <>括起来的叫做类型参数。
for (int i = 0; i < 3; i++)
{
apples.add(new Apple());
// apples.add(new Orange());//compile-time error
} System.out.println("\nmain方法里面第一种id输出:");
for (int i = 0; i < apples.size(); i++)
{
System.out.println(apples.get(i).id());// 0 1 2
} System.out.println("\nmain方法里面第二种id输出:");
for (Apple c : apples)
{
System.out.println(c.id());
}
}}class Apple
{
private static long counter;
private final long id = counter++; public Apple()
{
System.out.println("添加进list时候,每个实例化苹果的id:"+id);
} public long id()
{
return id;
}
}class Orange
{
}代码整理了下,在无参构造里面多添加了一句,这样就很清楚了,
随后学习完反射时候你还可以在main方法里面直接拿到这边私有的成员变量值,那时候更容易看到