【为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?】教程文章相关的互联网学习教程文章

Java8 Stream编译器消息 – 局部变量必须是最终的或有效的最终【代码】

我有一点问题.当我写这个for循环时,f.getAnswerScore().get(i)….中的变量i带有下划线并带有错误信息: – 我在封闭范围内定义的局部变量必须是最终的或 有效地最后.这与流有关吗?也许流不能用于循环?for (int i = 0; i < 10; i++) {correct = active.stream().filter(f -> f.getAnswerScore().get(i).getStatus().equals(AnswerStatus.ANSWERED_CORRECT)).count(); }解决方法:与匿名内部类一样,lambda表达式只能访问局部变量...

为什么Java编译器在使用带扩展名的通配符时限制向列表添加正确类型的元素【代码】

我理解关于扩展和超级其他帖子的PECS规则,但我对代码下面的限制有点困惑List<Integer> integerList = new ArrayList<>(); integerList.add(1); // integerList.add(3.14); => understandably this will not compile, // as we cannot add double to a list of IntegerList<? extends Number> numberList = integerList; // numberList.add(3); => will not compile! // Why the compiler cannot infer from the above line that ...

静态抽象内部类访问外部类私有字段java时的编译器错误【代码】

我有一个私有fieds类,还有一个静态抽象内部类,泛型类扩展外部类类型,尝试访问外部类私有字段,但得到以下错误: – 错误:a在外部有私人访问权限 – 错误:doSomething在Outer中拥有私人访问权限 见下面的代码:public abstract class Outer extends SomeOuter {private Object a;private void doSomething(){}public static absract class Inner<T extends Outer> extends SomeOuter.SomeInner<T> { public InnerMethod(T p) {...

Java编译器通常预先计算最终字段的哈希码吗?【代码】

我有一个HashMap密集型Java程序,其中几个类具有从最终字段计算的哈希码.例如:public class Foo {private final int bar;private final String zot;@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + bar;result = prime * result + zot.hashCode();return result;} }编译器可以观察到在对象初始化之后哈希码不能改变,并将其预先计算到另外的私有final字段中.当前的Java编译器是否像...

java(编译器或jvm)是否以不同方式处理类的静态最终成员?如果是的话【代码】

围绕静态最终常量进行一些优化似乎是合乎逻辑的(例如用文字等替换变量)以提高性能解决方法:对于无法使用的常量(字符串,数字),编译器的行为方式不同,是的. 当编译器发现一个常量表达式时,它会将该常量表达式的结果嵌入到使用它的代码中,而不是每次都计算它.所以如果你有:public static final int FOO = 10; public static final int BAR = 5;... System.out.println(FOO * BAR);那么常数值50将直接嵌入代码中. 请注意,这有与之关联...

Java编译器抱怨未报告的IOException【代码】

我正在尝试编写一个列出目录中所有非隐藏文件的方法.但是,当我添加条件!Files.isHidden(filePath)时,我的代码将无法编译,并且编译器返回以下错误:java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.IOException; must be caught or declared to be thrown我试图捕获IOException,但编译器仍然拒绝编译我的代码.有什么明显的东西让我失踪吗?代码如下.try { Files.walk(Paths.get(root))....

编译器允许的方法头(简单的Java练习)【代码】

我正在练习,简单的练习是,给定一个FeatureFilm类定义为具有以下方法:public void update(Actor a, String title) public void update(Actor a, Actor b, String title) public void update(String topic, String title)编译器允许使用以下哪些附加方法头?public boolean update(String category, String theater) public boolean update(String title, Actor a) public void update(Actor b, Actor a, String title) public void...

Java编译器对象代码(字节代码?)

典型的C程序将被编译,组装,链接和加载.我知道Java可以与JVM一起使用并生成字节代码.是否可以使用链接器连接两个“目标文件”?例如,通过使用链接器并链接两个目标文件,可以一起使用C程序和C程序. 可以在C和Java之间完成相同的操作吗?解决方法:您不能直接将已编译的C代码与已编译的Java代码链接. 您可以使用Java Native Interface (JNI)从Java调用已编译的C或C代码:The Java Native Interface (JNI) enables the integration of c...

项目如何在eclipse中编译,但javac会抛出编译器错误?【代码】

在学校的组项目上工作,当我在命令行中运行javac时,以下行会引发错误.Object result = engine.eval(equation); //evaluate the arithmetic expression cellValue = (double) result; // <-- This throws a compiler error (obviously)但出于某种原因,这会在我的小组成员正在使用的eclipse中编译和工作(!).我试着让自己确认,因为我无法相信.ScriptEngine engine = manager.getEngineByName("JavaScript");引擎是一个ScriptEngine,如...

为什么Java编译器不能解决这个问题呢?【代码】

为什么编译器无法在以下示例中从Collections.emptySet()推断出结果的正确类型?import java.util.*; import java.io.*;public class Test {public interface Option<A> {public <B> B option(B b, F<A,B> f);}public interface F<A,B> {public B f(A a);}public Collection<String> getColl() {Option<Integer> iopt = null;return iopt.option(Collections.emptySet(), new F<Integer, Collection<String>>() {public Collection<...

如何告诉Java编译器不要抱怨某些异常没有被捕获或抛出?【代码】

有没有办法告诉Java编译器如果我100%确定永远不会发生异常,就不会抱怨某个异常没有被捕获或抛出?解决方法:假设您的意思是检查异常,则不能.通常我会捕获异常,但会将其传播到RuntimeException,例如try {// Do something which could, but won't, throw SomeCheckedException } catch (SomeCheckedException e) {throw new WorldHasGoneMadException(e); }您可能非常希望为这种情况创建一个特定的例外 – 虽然我不建议使用真实名称的...

Java编译器是否会预先计算文字的总和?【代码】

int i = 10 + 20;是否真的编译器将处理此代码,添加10 20,字节代码与此代码行相同?int i = 30;我在哪里可以阅读它?解决方法:是的,您甚至可以自己验证它.拿一个小的Java文件,例如:public class Main {public Main() {int i = 10 + 20;} }用javac Main.java编译它,然后运行javap -c Main来反汇编它:Compiled from "Main.java" public class Main extends java.lang.Object{ public Main();Code:0: aload_01: invokespecial ...

当我们在Java中将Integer分配给int时,为什么编译器不会出错【代码】

当我们将Integer(object)赋给int(primitive)时,为什么编译器不会出错?int i; Integer ii = new Integer(5); i = ii;//no compilation error.所有其他类型(byte-Byte,float-Float)都是这种情况. 是什么原因?我错过了什么吗?解决方法:它被称为autoboxing / unboxing. 从Java 1.5开始,编译器会自动将基元“装箱”到相应的类中(例如int和Integer,double和Double等),并根据需要取消框. 有关详细信息,请参阅文档中的this page.

java – 编译器如何知道在执行之前要抛出的异常?【代码】

import java.io.*; class ex3 {public static void main(String args[]){myfun();}static void myfun(){try{FileInputStream f = new FileInputStream("file.ytxt");System.out.println("my fun");}catch(Exception e) //Line 1{System.out.println(e.getMessage());}catch(FileNotFoundException e) //Line 2{System.out.println("File Not Found Caught");}} }我创建了两个异常处理程序代码(一个是通用的,另一个是第1行和第2行)....

java – 编译器说缺少return语句但我已经有3【代码】

这很奇怪.我的编译器说我错过了一个return语句,但我已经有3个.这是我的代码:public int tortoiseMoves() {int i = tGen();if (i >= 1 && i <= 5){int fastplod = 3;return fastplod;}if (i >= 6 && i <= 8){int slowplod = 1;return slowplod;}if (i >= 9 && i <= 10){int slip = -6;return slip;} }解决方法:您必须确保始终返回一个值.如果你的所有条件都失败了,你就不会退货. 修复将链接你的if语句,因为它们是独占的,并使用else...