gpt4 book ai didi

java反射失败

转载 作者:行者123 更新时间:2023-11-30 05:05:37 26 4
gpt4 key购买 nike

编辑:不要读这篇文章,我很愚蠢:)

<小时/>

我有动物和狗的类(class)

public class animal{
public static String getTitle(){ return "bla"; }
}


public class dog extends animal{
public static String getTitle(){ return "bla2"; }
}

当我这样做

animal p1=new animal();
animal p2=new dog();
System.out.println(p2.getClass().getDeclaredMethod("getTitle"));

我明白

Main.java:16: unreported exception java.lang.NoSuchMethodException; must be caught or declared to be thrown
System.out.println(p2.getClass().getDeclaredMethod("getTitle"));

但是,如果我这样做 getDeclaredMethods getTitle 就会列在那里。

我是愚蠢还是只是讨厌 Java 的另一个原因?

最佳答案

您需要用 try/catch block 包围该语句,因为它使用缓存的异常。这本质上意味着编译器将确保您有某种方法来处理发生错误时发生的情况,以避免向用户显示不友好的崩溃屏幕。

就您而言,您应该执行以下操作:

animal p1 = new animal();
animal p2 = new dog();
try {
System.out.println(p2.getClass().getDeclaredMethod("getTitle"));
} catch(NoSuchMethodException e) {
// error handling in the case getTitle() doesn't exit
}

如果您根本不想处理异常,而只想传递它们,而不要求编译器检查它们,则可以将所有代码包含在以下内容中:

try {
// ...
} catch(Exception e) {
throw new RuntimeException(e);
}

但是,这通常不是良好的 Java 实践。

关于java反射失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com