(JAVA)这段JAVA反射机制代码为什么抛异常?

顺应天意了却凡尘 发布于 02/20 16:52
阅读 223
收藏 0

@tcxu 你好,想跟你请教个问题:

package jiu;

/**
 * @ClassName : TestReflection01
 *
 * @Description:通过反射实例化对象
 *
 * @date :2014年3月30日上午11:09:20
 */
class Book {
    private String title;
    private double price;

    public void setPrice(double price) {
        this.price = price;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    // getter略
    @Override
    public String toString() {
        return "图书名称:" + this.title + ",价格:" + this.price;
    }
}

public class TestReflection01 {
    public static void main(String args[]) throws Exception {
        Class<?> cls = Class.forName("Book");
        Book book = (Book) cls.newInstance();
        book.setTitle("Java开发实战经典");
        book.setPrice(79.8);
        System.out.println(book);
    }
}
 

加载中
1
你不懂的吧
你不懂的吧

Class.forName()带上包路径,Class.forName("jiu.Book");

0
tcxu
tcxu
  1. 主方法的第一行代码:Class<?> cls = Class.forName("Book");, 调用了 Class 类的静态方法  public static Class<?> forName(String className) throws ClassNotFoundException。
  2. 调用此方法的参数: className 为 所需类的完全限定名, 返回: 具有指定名的类的 Class 对象。
  3. 如果在代码案例中,找不到这个"完全限定名"的类,则会抛出 ClassNotFoundException( 未找到指定名字的类的异常 ),而后终止程序运行。
  4. 比如 将字符串参数,即 所需类的完全限定名,改为 “Books”, 虽然可顺利通过编译, 但运行这一行代码时, 就会出现上述情况,而停止程序运行。
返回顶部
顶部