M*0
2 楼
Generics方面
再说你这个也不是Java里头的,Class后面的Generic不会有问号的
再说你这个也不是Java里头的,Class后面的Generic不会有问号的
r*l
3 楼
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
Look for "Bounded Wildcards"
【在 G*V 的大作中提到】
: static Class
: 有点C++模板的意思?
: 应该查什么方面
Look for "Bounded Wildcards"
【在 G*V 的大作中提到】
: static Class
: 有点C++模板的意思?
: 应该查什么方面
G*V
5 楼
谢谢,我来看看先
【在 r*****l 的大作中提到】
: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
: Look for "Bounded Wildcards"
【在 r*****l 的大作中提到】
: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
: Look for "Bounded Wildcards"
G*V
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"
不过别人写的以下代码我还是看得不是很懂,只懂大概意思
比如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
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;
如果没有调用过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
9 楼
这个东西教学用的吧?谁实践中这么写代码肯定被我骂死,
一点好处都没有。
【在 M***0 的大作中提到】
: 你如果要new出Student实例,要先调用setPersonClass(Student.class)
: 如果没有调用过setPersonClass,personFor默认返回的实例是Person类型
: setPersonClass里头加了的目的
: 是为了让你在调用setPersonClass(XXX.class)的时候出现编译错误(只有当XXX是
: Person或是Person的子类时才能通过)
: 如果你把2处都去掉,
: 那你可以通过setPersonClass(TheClassYouWant)
: 然后personFor()得到任何类型的实例
一点好处都没有。
【在 M***0 的大作中提到】
: 你如果要new出Student实例,要先调用setPersonClass(Student.class)
: 如果没有调用过setPersonClass,personFor默认返回的实例是Person类型
: setPersonClass里头加了的目的
: 是为了让你在调用setPersonClass(XXX.class)的时候出现编译错误(只有当XXX是
: Person或是Person的子类时才能通过)
: 如果你把2处都去掉,
: 那你可以通过setPersonClass(TheClassYouWant)
: 然后personFor()得到任何类型的实例
r*l
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;
time.
If Student is Person's subclass. Student.class's compile time type is Class<
Student>
Class
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
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;
相关阅读
看到一个关于singleton的面试题这个是什么意思?线程hardy会一直等待下去么?System.currentTimeMillis()的取值问题1 quick interview questionjdbc statement question菜鸟求助:如何把java程序打包成exe文件发布?打算quit enterprise Java了CS 职业方向疑问Eclipse taking 420MB memory!Anyone know SAML 2.0 and OpenSAML ?Java会毁在Oracle手里吗?$250 Chase Sign Up Bonus 新促销以前只有150刀的求pdf 版本的sun java online tutorialChase Freedom&Sapphire信用卡开户送350刀 限时 另送drugstore giftcard 若干求推荐的java多线程教程Eclipse RSE plugin可不可以在project explorer里面直接编辑远程文件java developer with FINANCIAL EXPERIENCEa fun coding questionlocal变量被赋值了几次?