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

发布于 2022-01-05 21:13:14 字数 1920 浏览 896 评论 2

@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);
    }
}
 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文