黑马程序员技术交流社区
标题: 程序运行问题 [打印本页]
作者: 张亚超 时间: 2015-4-10 15:36
标题: 程序运行问题
//: typeinfo/toys/ToyTest.java
// Testing class Class.
package typeinfo.toys;
import static net.mindview.util.Print.*;
interface HasBatteries {}
interface Waterproof {}
interface Shoots {}
class Toy {
//Comment out the following default constructor
//to see NoSuchMethodError from (*1*)
Toy() {}
Toy(int i) {}
}
class FancyToy extends Toy
implements HasBatteries, Waterproof, Shoots{
FancyToy() { super(1); }
}
public class ToyTest {
static void printInfo(Class cc) {
print("Class name: " + cc.getName() +
" is interface? [" + cc.isInterface() + "]");
print("Simple name: " + cc.getSimpleName());
print("Canonical name : " + cc.getCanonicalName());
}
public static void main(String[] args) {
Class c = null;
try {
c = Class.forName("typeinfo.toys.FancyToy");
}catch(ClassNotFoundException e) {
print("Can't find FancyToy");
System.exit(1);
}
printInfo(c);
for(Class face : c.getInterfaces())
printInfo(face);
Classup = c.getSuperclass();
Object obj = null;
try {
// Requires default constructor:
obj = up.newInstance();
} catch(InstantiationException e) {
print("Cannot instantiate");
System.exit(1);
} catch(IllegalAccessException e) {
print("Cannot access");
System.exit(1);
}
printInfo(obj.getClass());
}
} /* Output:
Class name: typeinfo.toys.FancyToy isinterface? [false]
Simple name: FancyToy
Canonical name : typeinfo.toys.FancyToy
Class name: typeinfo.toys.HasBatteries isinterface? [true]
Simple name: HasBatteries
Canonical name : typeinfo.toys.HasBatteries
Class name: typeinfo.toys.Waterproof isinterface? [true]
Simple name: Waterproof
Canonical name : typeinfo.toys.Waterproof
Class name: typeinfo.toys.Shoots isinterface? [true]
Simple name: Shoots
Canonical name : typeinfo.toys.Shoots
Class name: typeinfo.toys.Toy is interface?[false]
Simple name: Toy
Canonical name : typeinfo.toys.Toy
*///:~
求大神解答:加黑体大字体的这部分是怎么运行的啊,看不懂啊
作者: xlunaer 时间: 2015-4-10 18:27
Classup = c.getSuperclass(); //获取c 的父类并赋给up类
Object obj = null;
try {
// Requires default constructor:
obj = up.newInstance(); //通过newInstance()方法获取一个c父类的对象。
这样即使不知道c的父类是谁,也可以通过反射的方式实例化一个父类的对象
作者: 张亚超 时间: 2015-4-10 20:52
虽然还是不太理解,感谢感谢啊
作者: xlunaer 时间: 2015-4-10 21:33
回去把反射再看看,我最近也在看,这部分知识有点抽象,多想想
作者: z小怪兽 时间: 2015-4-10 21:44
这么复杂,学习。。
作者: sisel 时间: 2015-4-10 21:47
反射啦 看看教程就懂的
作者: 梦逆光377 时间: 2015-4-10 21:49
哈哈哈哈 找问问大神
作者: 涿郡丶二哥 时间: 2015-4-10 21:49
还没学到呢!拜膜一下算了
作者: 张亚超 时间: 2015-4-10 22:28
哥们,你是准备报 5月7号那个班吗,方不方便留个qq我的 1337900012
作者: 张亚超 时间: 2015-4-10 22:29
我这看了也不懂。。
作者: 张亚超 时间: 2015-4-10 22:30
会努力接着看的:lol
作者: 牵猪散步 时间: 2015-4-10 22:42
学习学习!还没有到这呢!
作者: 邓士林 时间: 2015-4-10 22:43
学些 下,定下
作者: 邓士林 时间: 2015-4-10 22:45
怒赞一个,学习
作者: lf027 时间: 2015-4-10 22:48
这还在努力呢,加油啊,兄弟
作者: xlunaer 时间: 2015-4-11 13:53
不是,我打算报5.18的android
作者: 张亚超 时间: 2015-4-11 19:18
好吧,加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |