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

尝试方舟编译器下对Java中标识符中文命名【代码】

之前承蒙这位测试, 方舟编译器支持Java下的中文命名标识符: 跑不通的可参考Z乎的这篇文章,已找到一个可使测试用例编译通过的java-core库 · Issue #I11R87 · HarmonyOS/OpenArkCompiler - 码云 Gitee.com 为了确认之前(手工翻译方舟编译器源码:尝试重命名标识符与文本)的源码汉化不会影响编译, 自己也试试. 编译方法参考: 小乖他爹:方舟编译器学习笔记8 工具链可运行(helloworld编译成功) 注: 留意jbc2mpl命令需在libjava-core下...

Java编译器不会优化静态最终字符串.为什么?【代码】

我的应用程序中有以下代码:public static final boolean DEBUG = true;public static final boolean REL = !DEBUG;private static final String DEBUG_OR_RELEASE = (REL) ? "RELEASE_VER" : "DEBUG_VER";我认为Java编译器将从生成的.apk文件中完全消除“DEBUG_VER”字符串(当通过Proguard导出时)但是当我检查.apk文件时,我看到那里的“DEBUG_VER”字符串. 为什么?我错过了什么?我做错了什么?解决方法:根据你发布的内容,DEBUG是...

关于传统解释器,编译器和JIT编译器/解释器(JAVA)的说明【代码】

我正在学习Java,以下事情对我来说有点混乱.我理解的是: Java Compiler-> Java编译器只是将.java程序转换为.class文件, 这意味着将我们的源代码转换为字节代码(它是虚拟机(JVM)的操作码代码列表,它使java,平台无关).Java Interpreter->仅仅“解释”代码并且不会将其转换为本机机器代码.它将每个指令逐个字节代码作为命令执行,并执行它,无论同一条指令发生多少次.(这就是为什么它很慢而java引入了JIT概念.) JIT编译器 – >这也在执行...

为什么java编译器不报告Intellij中多播表达式的未经检查的强制转换警告?【代码】

为什么以下代码没有报告Intellij IDEA与jdk 1.8.0_121的未经检查的警告,因为供应商< R> &安培; Serializable是T的超类型?<T extends Supplier<Integer> & Serializable> T createdBy(AtomicInteger counter) {// v--- if I removed the first cast expression, I can't compile itreturn (T) (Supplier<Integer> & Serializable) counter::incrementAndGet;// ^--- it should be reports unchecked warnings, but ...

java – 在编译器优化的同一语句中多次调用同一个方法?【代码】

假设我在Java 8中做了类似的事情(特别是Android)String name = someObject.getName() != null ? someObject.getName() : "null";并且方法getName()可能会有很多调用其他方法来解析名称.还假设我经常调用这段代码. 做这样的事情会更好,性能更好吗?String name = someObject.getName(); name = name != null ? name : "null";解决方法:这看起来像是一种可能的优化,称为CSE; JVM AFAIK做到了这一点(但不确定Android). 但这很大程度上...

java – IntelliJ – 使用JDK 11和Eclipse编译器

我使用IntelliJ 2018.3,我需要使用JDK 11. 该项目在Eclipse(Eclipse编译器)上编译,但在IDEA(Javac编译器)上编译所以我决定在IDEA(Eclipse编译器4.7.2)上使用Eclipse编译器,但我总是有这个错误: 是否有任何解决方案使用Eclipse编译器在IntelliJ上编译我的程序,如果是,我该怎么做?解决方法:使用JDK 9或更低版本,Java 10和11尚不支持:https://youtrack.jetbrains.com/issue/IDEA-190791(Eclipse编译器特定限制). 您可以增加运行构建...

软件推荐 – 开源免费Java反编译器

是否有任何用于Ubuntu的开源Java Decompilers,最好是在存储库和/或GPL中? JAD和JD,我在谷歌搜索后发现的最受欢迎的反编译器,似乎只能以二进制形式提供.它们都是专有的. 很难相信在Ubuntu(或一般的Linux)中没有这样的软件. 如果您推荐的不止一个,为什么?解决方法:查看: > Krakatau;作者在stackoverflow.com活跃.> CFR> Procyon decompiler> Fernflower和mirror

如何告诉java编译器允许public作为包名?

在GWT代码中,我使用一个名为public的java子包,它包含html / css / etc ..文件. 我注意到java编译器输出不包含此子包及其内容. 出于测试目的,我想要这个.知道如何告诉java编译器包含这个子包及其内容吗?解决方法:你不能……这是一个保留的词…… 抱歉. http://www.jwrider.com/riderist/java/javaidrs.htm 编辑 和 http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 谢谢@Joachim

为什么编译器在Java中生成Enums?【代码】

我真的明白它无法扩展任何类来实现枚举,因为这意味着有多重继承.但我不明白的是,为什么编译器在使用“enum”而不是“class”时创建的枚举类是最终的. 是否有任何理由不能延长枚举? 另外:有没有办法在没有Copy& Paste的情况下为不同的枚举实现常见行为?解决方法:枚举的一个非常重要的方面是数字或值在编译时是已知的(至少在枚举的编译时). 所以如果你有这样的枚举:public enum Foo {BAR,BAZ; }然后你知道它有两个值:BAR和BAZ. ...

java – 为什么JIT编译器不能用于生成二进制文件?

JIT编译器用于将java字节代码转换为本机机器语言.据我所知,没有程序可以直接将java字节码转换为二进制文件,如.exe文件.那么为什么JIT编译器不能用于从字节码生成二进制文件呢?解决方法:JIT编译器动态编译代码. >它为不同风格的CPU生成不同的代码.>它为不同的内存模型生成不同的代码,例如对于tyhe 64位JVM,如果最大堆大小是< 4 GB,< 24 GB,< 32 GB或更多,您将在每种情况下生成不同的代码.>它将在加载和卸载类时重新编译代码.>它将根...

项目有不同的Java编译器版本时是否有任何问题?

我有一个带有几个Java项目的Eclipse工作区(在Maven中);这些彼此依赖.最近我开始改变一些项目以Java 1.7为目标,除了解决一些新的警告之外,编译时没有什么不同. 但是,当我尝试运行一切时,感觉会出现问题.在以下情况下,如何加载类文件,是否存在任何问题? >当Java 1.6项目依赖于Java 1.7项目时是否存在问题? 1.6 VM会拒绝运行任何1.7生成的字节码,还是会发生一些奇怪的事情以使其运行?>反向发生时有问题吗?解决方法:当你有java 1.6...

Java反编译器与java反汇编程序

我正在准备核心java,我有疑问 javap是反汇编程序还是反编译程序?他们之间有什么区别?使用哪些java CLI命令?解决方法:Javap只是一个“非正式”的反汇编程序,它的输出为您提供有关字节码的信息,但不适合由“汇编程序”使用,而是由人类阅读. 传统的差异(来自C语言世界): >编译器:将相对高级的源代码编译为汇编语言>汇编程序:将汇编代码编译为机器代码 把你的结论用于“反编译器”和“反汇编器” 有时,执行这两个步骤(反汇编和反...

为什么Java编译器生成奇怪的本地变量和堆栈映射帧?如何使用它们可靠地确定变量类型?【代码】

我在ASM框架的帮助下创建Java字节码检测工具,需要确定并可能更改方法的局部变量类型.很快我遇到了一个简单的情况,其中变量和堆栈映射节点看起来有些奇怪,并且没有给我足够的有关正在使用的变量的信息:public static void test() {List l = new ArrayList();for (Object i : l) {int a = (int)i;} }给出以下字节码(来自Idea):public static test()VL0LINENUMBER 42 L0NEW java/util/ArrayListDUPINVOKESPECIAL java/util/ArrayLis...

java – 为什么编译器无法推断我的方法的返回类型?【代码】

这是我的代码.基本上我试图从我的intToEnumMap方法返回一个Map.But编译器不允许这样.为什么编译器不能推断我的方法的返回类型?public enum INVALIDTHRESHOLDSTATE{ONE(0,GAUGE_MIN_LOWER_THRESHOLD1_MESSAGE),TWO(1,GAUGE_THRESHOLD1_LOWER_THRESHOLD2_MESSAGE),THREE(2,GAUGE_THRESHOLD2_LOWER_MAX_MESSAGE);private static final Map<Integer,INVALIDTHRESHOLDSTATE> intToEnum = new HashMap<Integer, INVALIDTHRESHOLDSTATE>...

Scala编译器出错:java.lang.AssertionError:断言失败(即使在Eclipse中指定了项目依赖项)【代码】

当我尝试在Eclipse中编译我的Scala项目时,我得到以下错误(最后的堆栈跟踪).它表示断言失败的Java类TransportConf(在Java Build Path中指定的项目spark-network-common中).我检查了目标文件夹,并且TransportConf.class存在 可能导致问题的原因是: >我正在将上游/主代码中的代码合并到我的项目中,并引入了新的依赖项.我通常运行s??bt {reload,eclipse with-source = true}然后刷新我的eclipse项目.这是正确的方法吗? 我做的事情: ...