由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 这玩意是啥?
相关主题
extending generic class , but not mentioning its parameterized type?一个关于generics的问题
generics这样改对马?one java question under ubuntu
问两个语法问题Generics应该怎么得到它的class?
请问有没有generic的arraygeneric 疑问
问一个 java generic问题error: generic array creation
local变量被赋值了几次?这几个函数可以用Generic之类的东西合并么?
问一个java design的题get full class name
type erasure weird problemweird class definition
相关话题的讨论汇总
话题: person话题: class话题: student话题: extends
进入Java版参与讨论
1 (共1页)
G*V
发帖数: 9
1
static Class
有点C++模板的意思?
应该查什么方面
M***0
发帖数: 1180
2
Generics方面
再说你这个也不是Java里头的,Class后面的Generic不会有问号的
r*****l
发帖数: 2859
3
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Look for "Bounded Wildcards"

【在 G*V 的大作中提到】
: static Class
: 有点C++模板的意思?
: 应该查什么方面

G*V
发帖数: 9
4
......
就是JAVA里面的啊,只是别人写的我看不懂而已

【在 M***0 的大作中提到】
: Generics方面
: 再说你这个也不是Java里头的,Class后面的Generic不会有问号的

G*V
发帖数: 9
5
谢谢,我来看看先

【在 r*****l 的大作中提到】
: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
: Look for "Bounded Wildcards"

M***0
发帖数: 1180
6
问号只会出现在reference的定义面,不可能出现在class的定义里
这个绝对是你看错了

【在 G*V 的大作中提到】
: ......
: 就是JAVA里面的啊,只是别人写的我看不懂而已

G*V
发帖数: 9
7
看了一下好像就是基类以及其子类都适用的意思
不过别人写的以下代码我还是看得不是很懂,只懂大概意思
比如Person.class是啥?类名?然后先存在personClass?
接下来等别人调的时候再newInstance一个实例出来?
但是问题是要是Person.class是类名的话,它都放到personClass里面
那new出来的都是Person啊,那Person的子类Student就没法new出来了?
那这样又何必搞个那么复杂呢?实在不懂,求点拨
public class Person
{
static Class personClass = Person.class;
public static void setPersonClass(Class c)
{
personClass = c;
}
public static Person personFor()
{
Person person = personClass.newInstance();
return person;
}
}

【在 r*****l 的大作中提到】
: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
: Look for "Bounded Wildcards"

M***0
发帖数: 1180
8
你如果要new出Student实例,要先调用setPersonClass(Student.class)
如果没有调用过setPersonClass,personFor默认返回的实例是Person类型
setPersonClass里头加了的目的
是为了让你在调用setPersonClass(XXX.class)的时候出现编译错误(只有当XXX是
Person或是Person的子类时才能通过)
如果你把2处都去掉,
那你可以通过setPersonClass(TheClassYouWant)
然后personFor()得到任何类型的实例

【在 G*V 的大作中提到】
: 看了一下好像就是基类以及其子类都适用的意思
: 不过别人写的以下代码我还是看得不是很懂,只懂大概意思
: 比如Person.class是啥?类名?然后先存在personClass?
: 接下来等别人调的时候再newInstance一个实例出来?
: 但是问题是要是Person.class是类名的话,它都放到personClass里面
: 那new出来的都是Person啊,那Person的子类Student就没法new出来了?
: 那这样又何必搞个那么复杂呢?实在不懂,求点拨
: public class Person
: {
: static Class personClass = Person.class;

g*****g
发帖数: 34805
9
这个东西教学用的吧?谁实践中这么写代码肯定被我骂死,
一点好处都没有。

【在 M***0 的大作中提到】
: 你如果要new出Student实例,要先调用setPersonClass(Student.class)
: 如果没有调用过setPersonClass,personFor默认返回的实例是Person类型
: setPersonClass里头加了的目的
: 是为了让你在调用setPersonClass(XXX.class)的时候出现编译错误(只有当XXX是
: Person或是Person的子类时才能通过)
: 如果你把2处都去掉,
: 那你可以通过setPersonClass(TheClassYouWant)
: 然后personFor()得到任何类型的实例

r*****l
发帖数: 2859
10
是你错了。如果定义class,“class”是小写的。LZ给的例子里“Class”是大写C。

【在 M***0 的大作中提到】
: 问号只会出现在reference的定义面,不可能出现在class的定义里
: 这个绝对是你看错了

r*****l
发帖数: 2859
11
Person.class is the class of Person. It's type is Class at compile
time.
If Student is Person's subclass. Student.class's compile time type is Class<
Student>
Class is NOT Class's sub class. They are NOT compatible at
compile time.
If the method takes type Class as parameter, you can pass in Person.class
and Student.class but you are not using generics.
If you use type Class as parameter, you cannot pass in Class > as parameter (compile error). You have to use Class in
order to pass in class of Person and class of any of Person's subclasses.

【在 G*V 的大作中提到】
: 看了一下好像就是基类以及其子类都适用的意思
: 不过别人写的以下代码我还是看得不是很懂,只懂大概意思
: 比如Person.class是啥?类名?然后先存在personClass?
: 接下来等别人调的时候再newInstance一个实例出来?
: 但是问题是要是Person.class是类名的话,它都放到personClass里面
: 那new出来的都是Person啊,那Person的子类Student就没法new出来了?
: 那这样又何必搞个那么复杂呢?实在不懂,求点拨
: public class Person
: {
: static Class personClass = Person.class;

1 (共1页)
进入Java版参与讨论
相关主题
weird class definition问一个 java generic问题
可以帮我看看这HelloWordApplet哪错了吗?local变量被赋值了几次?
Question on classpath问一个java design的题
multiple classes in one filetype erasure weird problem
extending generic class , but not mentioning its parameterized type?一个关于generics的问题
generics这样改对马?one java question under ubuntu
问两个语法问题Generics应该怎么得到它的class?
请问有没有generic的arraygeneric 疑问
相关话题的讨论汇总
话题: person话题: class话题: student话题: extends