草庐IT

Java:从 X 到 Y 的未经检查的转换/如何实现 castOrNull

我已经实现了这个功能:staticYcastOrNull(Xobj){try{return(Y)obj;}catch(ClassCastExceptione){returnnull;}}这给了我编译器警告:Typesafety:UncheckedcastfromXtoY我不是很明白。我在这里做的try/catch不是检查它吗?我可以忽略警告吗?我的功能是否会按预期工作?我将如何正确实现它?我还尝试了objinstanceofY检查,但由于Java处理泛型的方式,这不起作用。顺便说一句,这个函数对我来说似乎很有用(让其他一些代码更干净)。我想知道Java中是否已经存在这样的功能?一个我想

java - 如果抛出未经检查的 Java 异常,则停止 bash 脚本

我正在从Bash脚本中运行一个java程序。如果java程序抛出未经检查的异常,我想停止bash脚本而不是脚本继续执行下一个命令。如何做到这一点?我的脚本如下所示:#!/bin/bashjavac*.javajava-eaHelloWorld>HelloWorld.txtmvHelloWorld.txt./HelloWorldDir 最佳答案 同意汤姆·霍丁的意见,要在Bash脚本中检查Java程序的退出代码:#!/bin/bashjavac*.javajava-eaHelloWorld>HelloWorld.txtexitValu

java - 为什么应该尝试抛出未经检查的异常而不是已检查的异常?

这个问题在这里已经有了答案:Thecaseagainstcheckedexceptions(33个答案)关闭6年前。我被告知我应该考虑在我的代码中抛出Uncheckedexception而不是Checkedexception不仅如此,而且扩展RuntimeException和我自己的。现在,我明白了两者之间的区别,但仍然不明白我为什么要那样做?如果我有这个抛出两种异常的方法头:publicstaticOptionalgetFileMd5(StringfilePath)throwsNoSuchAlgorithmException,IOException{}为什么我应该用一个(不太详细的)

java - 具有多个有界类型和未经检查的转换的 Class.asSubclass

我有一个用类型&Runnable>泛化的类.我有一个成员变量Classbar我通过类名设置:t=(Class)Class.forName(name).这给了我一个未经检查的Actor警告。通常,使用asSubclass可以在类似情况下使用,但由于T有多个边界,我无法在没有收到编译器警告的情况下使用它://Thisistypesafe,butIstillgetanuncheckedcastwarningt=(Class)Class.forName(className).asSubclass(Enum.class).asSubclass(Runnable.class);我可以不使用@Sup

java - 为什么抑制这个未经检查的警告是安全的?

考虑UnaryFunctionEffectiveJava泛型章节中定义的接口(interface)。publicinterfaceUnaryFunction{Tapply(Targ);}和以下用于返回UnaryFunction的代码//GenericsingletonfactorypatternprivatestaticUnaryFunctionIDENTITY_FUNCTION=newUnaryFunction(){publicObjectapply(Objectarg){returnarg;}};//IDENTITY_FUNCTIONisstatelessanditstypepar

java - 401 在 Tomcat 中未经授权

我正在使用Tomcat6.0作为网络服务器,我正在尝试打开tomcat管理器页面,但是每当我输入在tomcat-users.xml文件中指定的用户名时,我得到一个错误:**401Unauthorized**这是我的tomcat-users.xml文件:我重新启动了tomcat,但它没有帮助我。有人可以告诉我发生了什么问题吗? 最佳答案 我今天发现,如果您的tomcat-users.xml文件中存在语法错误,Manager应用程序将启动但您将无法登录。确保所有XML标记都正确关闭并且没有任何拼写错误。

java - 未经初始化不执行静态 block

我有一个关于静态block的问题:假设我有一个看起来像这样的类:classSomeClass{static{System.out.println("staticblock");}}然后我在某处定义了一个SomeClass类型的变量。publicstaticvoidmain(Stringargs[]){SomeClassfoo;}现在我认为静态block会被执行,但事实并非如此。据我所知,一旦类加载器加载SomeClass类,就会执行静态block。现在回答我真正的问题:类不是在我定义该类型的变量后立即加载吗?。如果是,为什么不执行静态block?如果答案是否定的,那么我怎么知道类加载器

java - 从 Java 中的 Object 转换而没有收到未经检查的警告

我写了一个类,它有一个map.我需要它来保存任意对象,但同时有时我需要转换其中一些对象,所以我会做类似的事情HashMapmap=newHashMap();Objectfoo=map.get("bar");if(fooinstanceofHashMap){((HashMap)foo).put("a",5);}发出警告Stuff.java:10:warning:[unchecked]uncheckedcastfound:java.lang.Objectrequired:java.util.HashMap((HashMap)foo).put("a",5);我怀疑这与泛型的使用有关。我可以使

Java 未经检查的重写返回类型

我有一个包含以下组件的项目:publicabstractclassBaseThing{publicabstractThingDoergetThingDoer();}publicclassSomeThingextendsBaseThing{publicThingDoergetThingDoer(){returnThings.getSomeThingDoer();}}publicclassSomeOtherThingextendsBaseThing{publicThingDoergetThingDoer(){returnThings.getSomeOtherThingDoer();}}pu

java - 局部变量可能尚未初始化 - 检测方法中抛出的未经检查的异常

我有一些具有这种结构的代码:publicvoidmethod(){Objecto;try{o=newObject();}catch(Exceptione){//Processing,severallinesthrownewError();//Ourownuncheckedexception}doSomething(o);}我有很多方法在catchblock中有相同的代码,所以我想将它提取到一个方法中,这样我就可以节省一些行。我的问题是,如果我这样做,我会得到一个编译器错误“局部变量o可能尚未初始化。”publicvoidmethod(){Objecto;try{o=newObject(