Java“空白的最终字段可能尚未初始化”Anonymous Interface vs Lambda Expression

我最近遇到了错误消息“空白的最终字段obj可能尚未初始化”。 通常情况下,如果您尝试引用可能尚未分配给值的字段。 示例类: public class Foo { private final Object obj; public Foo() { obj.toString(); // error (1) obj = new Object(); obj.toString(); // just fine (2) } } 我用Eclipse。 在第(1)我得到错误,在第(2)一切正常。 到目前为止这是有道理的。 接下来,我尝试在构造函数内创建的匿名接口中访问obj 。 public class Foo { private Object obj; public Foo() { Runnable run = new Runnable() { public void run() { obj.toString(); […]

我可以在java中从左到右进行图像alpha淡化吗?

我正在制作一个游戏,并希望从左到右让单个图像“淡入淡出”,图像的左侧部分的alpha值为1.0,右侧的alpha值为0.0。 (注意:我不希望它随着时间的推移改变它的样子,如淡入或淡出,但只是从左到右渐渐变化并保持不变)。 尝试绘制我想要的最终结果如下所示: lll lll ll ll lllll lll lll ll ll lllll lll lll ll ll lllll lll lll ll ll lllll lll lll ll ll lllll lll lll ll ll lllll ‘l’的密度代表alpha 我目前正在使用TYPE_INT_RGB的缓冲图像,并希望尽可能保持相同。 是否有任何内置的java类可以帮助我做到这一点,或者至少有一种(相对容易的)方法来做我自己无法解决的问题? 编辑:我不希望有任何forms的不透明框架。 我想在另一个BufferedImage上绘制一个BufferedImage(带有alpha渐变)。

Log4j:在运行时创建/修改appender,重新创建日志文件而不附加

我想为特定方法调用MyMethod()创建和启用appender,其日志输出应该转到“logFilePath”中的文件。 我不想在xml配置文件中包含这个appender,所以我想在运行时创建它。 首先,我尝试在运行时修改记录器属性,然后调用activateOptions,例如。 将level设置为DEBUG并在finally块中将其设置为Off,以便仅在方法使用时记录输出。 那没用。 我的问题是,appender每次都会重新创建一个文件,并且不会附加到同一个文件中。 这是因为setAppend是真的。 我对log4j不太熟悉,所以请随意提出另一种方法。 以下是解释我正在尝试的示例代码。 private static FileAppender createNewAppender(String logFilePath) { FileAppender appender = new FileAppender(); appender.setName(“MyFileAppender”); appender.setLayout(new PatternLayout(“%d %-5p [%c{1}] %m%n”)); appender.setFile(logFilePath); appender.setAppend(true); appender.setThreshold(Level.INFO); appender.activateOptions(); Logger.getRootLogger().addAppender(appender); return appender; } private static void removeAppender() { Logger.getRootLogger().removeAppender(fileAppender) ; // (“MyFileAppender”); } 我用以下方式调用上面的方法: private static FileAppender fileAppender = null; private static void myMethod(String […]

正则表达:谁更贪婪?

我最关心的是Java风格,但我也很欣赏有关其他人的信息。 假设你有一个像这样的子模式: (.*)(.*) 虽然不是很有用,但是假设这两个捕获组(例如, \1和\2 )是更大模式的一部分,与这些组的反向引用相匹配,等等。 所以两者都是贪婪的,因为他们尽可能地捕捉,只在必要时减少。 我的问题是:谁更贪婪? \1是否获得优先权,仅在必须时才提供\2的份额? 关于什么: (.*)(.*)(.*) 让我们假设\1确实优先。 让我们说它过于贪婪,然后吐出一个角色。 谁先得到它? 总是\2还是可以\3 ? 让我们假设它是\2得到\1的拒绝。 如果这仍然不起作用,谁现在吐出来? 是\2吐到\3 ,还是\1吐出另一个到\2 ? 奖金问题 如果你写这样的东西会发生什么: (.*)(.*?)(.*) 现在\2是不情愿的。 这是否意味着\1吐出到\3 ,而\2只是不情愿地接受\3的拒绝? 例 也许我没有给出具体的例子来certificate我是如何使用这些模式的,这是错误的,但这里有一些: System.out.println( “OhMyGod=MyMyMyOhGodOhGodOhGod” .replaceAll(“^(.*)(.*)(.*)=(\\1|\\2|\\3)+$”, “”) ); // prints “” // same pattern, different input string System.out.println( “OhMyGod=OhMyGodOhOhOh” .replaceAll(“^(.*)(.*)(.*)=(\\1|\\2|\\3)+$”, “”) ); // prints “” // now \2 is […]

spring数据mongodb group by

我在我的项目中使用spring数据Mongodb,并在下面的类中引用我的查询来对结果进行分组: 学生class: @Document(collection = “student”) public class Student { @Id private String id; private String firstName; private String lastName; //other fields //getters & setters } StudentResults(dto): public class StudentResults { private String firstName; private List studentIds; //I need List here public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; […]

抑制wav文件中的噪音

我正在使用wav文件作为输入来进行语音2文本转换的原型。我目前正在尝试使用几个ASR,例如Microsoft SAPi,Sphinx等。传递的音频wav文件包含来自背景的几种失真/噪音。 我尝试使用大胆来完全消除噪音,识别变得更好了。 噪音消除部分,我目前通过提供的Ui进行。 我的背景是java,我想用java实现相同的噪声消除部分。 我已经下载了Audacity源代码,我想知道哪种方法更好。 1)只需尝试对已存在的C ++方法进行jni调用。 2)使用傅立叶变换实现我自己的噪声门机制。 然而在后一种方法中,它更像是重新发明轮子。 是否有一个标准的api /算法已经在java中实现,它将接收wav文件输入并通过实现高/低通滤波器或任何其他方法来执行噪声消除。 我试图搜索“带有Java的数字音频”这本书,它似乎包含DSP算法,但它不可用。 任何有关采取的方法或apis可用的帮助都会非常有用。

当我使用jsoup或htmlunit获取页面时,href字段丢失

我正在尝试解析谷歌图片搜索结果 。 我正在尝试获取元素的href属性 。 我注意到当我以编程方式获取页面时, href字段丢失了(这与jsoup和htmlunit一起发生)。 比较通过java编程获得的页面元素和实际浏览器加载的页面元素,唯一的区别是,实际上缺少的href字段 (其余部分是相同的)。 href属性(https://stackoverflow.com/questions/39044648/href-field-missing-when-i-get-the-page-using-jsoup-or-htmlunit/IMAGE_LINK)如下: /imgres?imgurl=http%3A%2F%2Fcdn.zonarutoppuden.com%2Fns%2Fpe‌​liculas-naruto-shipp‌​uden.jpg&imgrefurl=h‌​ttp%3A%2F%2Fwww.zona‌​rutoppuden.com%2F201‌​0%2F10%2Fnaruto-ship‌​puden-peliculas.html‌​&docid=JR8NPqKrF3ac_‌​M&tbnid=0EPPOYQcflXk‌​MM%3A&w=900&h=600&bi‌​h=638&biw=1275&ved=0‌​ahUKEwih9O2e88_OAhWM‌​ExoKHRLGAGQQMwg2KAMw‌​Aw&iact=mrc&uact=8 也许javascript引擎存在一些问题? 或者可能是网站使用的某种算法反解析? Snippet Java代码: WebClient webClient = new WebClient(BrowserVersion.CHROME); webClient.waitForBackgroundJavaScript(50000); HtmlPage page1=null; try { // Get the first page page1 = webClient.getPage(URL); System.out.println(page1.asXml()); } catch (FailingHttpStatusCodeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); […]

使用reflection在Java中创建通用参数化类

如何使用reflection在Java中创建通用参数化类? 我有 public class SomeClass { public SomeClass() { } } 我需要一个它的实例。 我尝试过变种 Class c = Class.forName(“SomeClass”); 但是找不到允许我获得适当类型实例的语法,比如说 SomeType instance = (SomeType)Class.forName(“SomeClass”).createInstance(); 那么,我怎么能这样做呢?

JBOSS 7编码无法按预期工作

我的listgrids没有显示diacritc corectly的问题,我发现当我从java插入数据库时​​已经有bug的值。 这里的post有帮助,我改变了我的项目属性 – >文本编码 – >其他 – > UTF-8,这解决了我的问题。 事情是这只能解决我在本地的问题。 我需要做的是在我的Jboss服务器上也以某种方式设置编码。 这是我在配置文件中添加的内容: extensions> extension module=”org.jboss.as.clustering.infinispan”/> extension module=”org.jboss.as.connector”/> extension module=”org.jboss.as.deployment-scanner”/> extension module=”org.jboss.as.ee”/> extension module=”org.jboss.as.ejb3″/> extension module=”org.jboss.as.jaxrs”/> extension module=”org.jboss.as.jmx”/> extension module=”org.jboss.as.logging”/> extension module=”org.jboss.as.naming”/> extension module=”org.jboss.as.osgi”/> extension module=”org.jboss.as.remoting”/> extension module=”org.jboss.as.sar”/> extension module=”org.jboss.as.security”/> extension module=”org.jboss.as.threads”/> extension module=”org.jboss.as.transactions”/> extension module=”org.jboss.as.web”/> extension module=”org.jboss.as.weld”/> /extensions> system-properties> property name=”org.apache.catalina.connector.URI_ENCODING” value=”UTF-8″/> property name=”org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING” […]

创建大小为n的布尔数组的所有可能方式?

我需要能够创建一个组合的布尔数组,并通过程序运行它以查看它是否有效。 如果没有,那么我将其丢弃并转到下一个组合。 我的问题是我不知道如何创建这个数组,因为n可以等于1-1000。 所以我打算使用Integer.toBinaryString,但是由于它太过大而无法工作到32岁。任何帮助都会很棒。 谢谢!