草庐IT

编译ffmpeg

全部标签

java - 在编译时禁用 Java 日志记录

我有一些Java代码,我想使用日志消息进行检测以进行调试。但是,最终(已编译)生产代码不应包含任何日志记录,因为它会减慢执行时间。Java中有什么方法可以在编译时禁用记录器吗?我不担心运行时启用/禁用记录器的日志方法中的检查会增加足迹。if(logging==enabled){//dologging}但我想在我的生产代码中避免像下面这样的参数构造:Logger.log("undefinedstate"+state+"@"+newDate());我正在使用Sun的Java编译器。 最佳答案 您是否考虑过使用{}占位符的slf4j方法。

java - 为什么 Java 编译器不支持导入继承?

在Java中,导入与(外部)类相关,因为每个(外部)类都应该在单独的文件中编码。因此,可以声称类定义之前的import...;指令与类相关联(有点像注释)。现在,如果可以继承父类的导入,那将大大减少源文件的困惑。为什么这不可能?即为什么Java编译器不应该考虑基类的导入?注意事项:可能有不止一个答案。我知道如果您让eclipse组织您的导入,这不是什么大问题,无需提及。这是关于“为什么”,而不是“如何”(a-la-this)。 最佳答案 首先,重要的是要注意并非每个类都必须在单独的文件中编码-但每个公共(public)顶级类都必须是

java - 编译 vs 翻译, "compiling"Java 到字节码?

我的理解是这样的,定义:翻译-拥有某种语言的代码,生成另一种语言的代码。Compilaton-翻译成机器代码。机器码-CPU的直接指令。现在,来自docs.oracle.com:javac-Javaprogramminglanguagecompiler编译器...?我认为它是Java翻译器,因为它生成的是代码,而不是机器代码。字节码需要解释器(JVM)才能运行,因此它绝对不是机器码。来自Wikipedia:Javaapplicationsaretypicallycompiledtobytecode同样。根据定义,我会说Java翻译为字节码。Internet上还有更多示例,我认为对此存在

java - "Cannot Find Symbol"编译错误

我的编码经验只有几年,所以这个问题应该很容易回答。我写了两个接口(interface):类和游戏。接口(interface)CLASS应该扩展接口(interface)GAME。下面是两个接口(interface)源:packageImpl;publicinterfaceGame{//METHODSANDVARS}packageImpl;publicinterfaceClassextendsGame{//METHODSANDVARS}现在,当我尝试编译第二个接口(interface)时,出现以下错误class.java:4:cannotfindsymbolsymbol:classGam

java - 模式.编译 ("\\[.+?\\]");

在此声明中,摘自Pagerank源代码:Pattern.compile("\\[.+?\\]");这个模式是什么意思?我试过研究它,它说2个斜线表示一个斜线,但是.+是什么?? 最佳答案 这个字符串文字:"\\[.+?\\]"表示这个字符串:\[.+?\]所以这个表达式:Pattern.compile("\\[.+?\\]");表示这个正则表达式:\[.+?\]意思是“文字[,后跟一个或多个字符——最好尽可能少——后跟]”。(.表示“除换行符以外的任何字符”;+?表示“我刚才所说的一个或多个,最好尽可能少”。)总的来说,正则表达式匹

java - Java 编译器是否优化了空的同步块(synchronized block)?

假设我在代码的某处写了一个空的synchronizedblock:synchronized(obj){//Nocodehere}因此,由于同步块(synchronizedblock)不包含任何代码,JIT编译器是否会通过不锁定obj来优化它,因为它没有用?Java编译器会做一些类似的技巧,例如Lockcoarsening,但是这个同步块(synchronizedblock)是否也会被优化掉?编辑:根据assylias的观点,synchronized(newObject()){//emptyblock}JIT编译器现在是否能够优化它,因为我使用的对象不会转义我的方法?

java - IntelliJ IDEA 中的 Annotation Processor 编译

我正在使用最新版本的IntelliJIDEA(13.1.4),并且正在开发自己的自定义注释。我的项目目前有两个模块MyOwnCustomAnnotationProcessor(这里我有实际的处理器)MyOwnCustomAnnotationProcessorTest(我基本上对几个类进行了注释,以查看它是否都能正常生成)我在Eclipse中工作,但我正在尝试迁移otIntelliJ,因为我无法忍受Eclipse。通过让Ant构建生成主项目的.jar文件,我设法让它在Eclipse中发挥作用,测试类将使用这个.jar。但我无法让它在IntelliJ上运行。在Settings->Compi

java - 由于未声明异常,编译失败,即使已声明

这个方法给了我一个编译,我不明白为什么:privatevoidinvokeMethods(Objectinstance,Listmethods)throwsInvocationTargetException,IllegalAccessException{methods.forEach(method->method.invoke(instance));}错误信息是:unreportedexceptionjava.lang.IllegalAccessException;mustbecaughtordeclaredtobethrown这没有意义:异常已经被声明为抛出。IntelliJ也无法纠

java - 为什么这个 instanceof 代码可以工作并且不会导致编译时错误?

在下面的代码中,x的类型是I(虽然x也实现了J但在编译时不知道)那么为什么(1)处的代码不会导致编译时错误。因为在编译时只考虑引用的类型。publicclassMyClass{publicstaticvoidmain(String[]args){Ix=newD();if(xinstanceofJ)//(1)System.out.println("J");}}interfaceI{}interfaceJ{}classCimplementsI{}classDextendsCimplementsJ{} 最佳答案 instanceof用于运

java编译器不会一次给出所有错误

System.out.println("Firsteror::withoutsemicolon")//firstErrorSystem.Out.println("Thisseconderror::OUTobjectnotusedproper::");//seconderrorclassTestCompilation{publicstaticvoidmain(String[]args){System.out.println("Hellonosemicolon::")//FirstErrorSystem.Out.println("Hellooutspellnotcorrectely::")