小编Ar3*_*r3s的帖子

什么是番石榴checkNotNull的重点

我是Guava的新手(说实话,我不是"非常新的",我是这个主题的新手)所以我决定阅读一些文档并在阅读时非常惊讶:

com.google.common.base.Preconditions.checkNotNull(...)

我不明白这个方法的意义.这意味着,而不是做:

myObject.getAnything();
Run Code Online (Sandbox Code Playgroud)

(这可能导致NullPointerExceptionif myObject为null)

我应该用

checkNotNull(myObject).getAnything();
Run Code Online (Sandbox Code Playgroud)

抛出NullPointerException如果myObject是空和返回myObject,如果它不为空.

我很困惑,这可能是有史以来最愚蠢的问题,但......

这有什么意义?考虑到我能想到的任何情况,这两行与结果完全相同.

我甚至认为后者更具可读性.

所以我一定错过了什么.它是什么?

java null preconditions guava

64
推荐指数
3
解决办法
3万
查看次数

Java名称冲突,具有相同的擦除,既不隐藏另一个

我得到这个名字冲突错误,我不知道我应该如何解决这个问题.我有两个类,我使用重载方法"createSensors".这里简化的是生成问题的代码:

public abstract class ClassA {
    public static List<Sensor> createSensors(Collection<? extends ClassA> list) {
        List<Sensor> sensors = new ArrayList<Sensor>();
        for (ClassA s : list) {
           sensors.add(s.getSensor());
        }
        return sensors;
    }
}

public abstract class ClassB extends ClassA {
    public static List<Sensor> createSensors(Collection<? extends ClassB> list) {
        List<Sensor> sensors = new ArrayList<Sensor>();
        for (ClassB s : list) {
           sensors.add(s.getSensor());
        }
        return sensors;
   }
}
Run Code Online (Sandbox Code Playgroud)

java generics name-clash

18
推荐指数
2
解决办法
2万
查看次数

继承方法的切入点(在类设计不可知的上下文中)

我正在摆弄AspectJ并想出一个我似乎无法正确实现的想法(我的生活故事).

我已经定义了一个方面:

package my.package;

import org.aspectj.lang.annotation.*;
import org.aspectj.lang.ProceedingJoinPoint;

@Aspect
public class MyAspect {

    @Pointcut("execution(* *(..)) && this(o)")
    public void instanceMethod(Object o) {}

    @Pointcut("within(@Marker *)")
    public void methodsFromMarkedClasses() {}

    @Around("methodsFromMarkedClasses() && instanceMethod(o)")
    public Object markedMethodsAdvice(ProceedingJoinPoint joinPoint, Object o) throws Throwable {
        // do awesome stuff
        return null; //<- not the actual return, just added this so that my head wouldn't hurt
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经定义了@Marker一个空的注释.

我们的想法是在markedMethodsAdvice任何时候对标记为的类的对象调用方法时执行建议@Marker.甚至(这里是棘手的部分):


情况1

如果所述方法继承自未标记的类,请参阅示例:

特定

package my.package;
public class Alpha {
    public …
Run Code Online (Sandbox Code Playgroud)

java inheritance annotations aspectj pointcut

12
推荐指数
1
解决办法
943
查看次数

Cucumber-JVM认为所有的anotations都是可以互换的

我已经注意到了(非常野蛮地)使用cucumber-JVM,当你定义哪些步骤具有看似相同名称的特征时,它们被认为是可互换的.

特定

Feature: Grab that cash with both hands and make a stash

  Scenario: Spend it
    Given Jack has 5 dollars
    When  Jack wants to buy Lear Jet
    Then  He doesn't have enough cash

  Scenario: aquire it
    Given Jack is broke
    But   his wealth is slowly growing
    When  Jack has 5 dollars
    Then  He can afford a pack of gum

  Scenario: own it
    Given Jack is broke
    But   he has a job that's paid 5 dollar an hour …
Run Code Online (Sandbox Code Playgroud)

java annotations cucumber-jvm

9
推荐指数
1
解决办法
1931
查看次数

Eclipse就像:“无法确定[项目名称] / [文件路径] / [文件名称]的URI”

主要问题 :

我在Eclipse Luna上遇到以下错误:

您有一天来上班,尝试启动eclipse并提高工作效率,但是一旦打开工作台,您会看到所有文件选项卡都出错,例如:

无法确定“ my-project / path / to / file / filename.extension”的URI

而且,如果我在导航器/浏览器视图中签入,我将看不到任何项目。

我最初的几次推荐给其他遇到相同问题的人:

我在eclipse下重新创建了我的项目。


但是:

  • 项目规模越来越大(每次都有越来越多的子项目重新创建)
  • 这个问题越来越频繁
  • 我对它需要的体力劳动感到厌倦

因此,我对手头的解决方案不满意

因此,我正在寻找一种自动解决此问题的方法(附带某种脚本或命令行集)或至少某种防止这种情况发生的方法。


到目前为止,我的进度:

我已经进入了工作区文件夹:

workspace
??? .metadata
    ??? .plugins
        ??? org.eclipse.core.resources
            ??? .projects
                ??? project1-newName
                ??? project1-oldName
                ??? project2-newName
                ??? project2-oldName
Run Code Online (Sandbox Code Playgroud)

因此,我项目的metada仍然存在!

如果再深入一点,我会发现每个文件夹的组织方式如下

.
??? .indexes
?   ??? [...]
??? .location
??? .markers
??? org.eclipse.jdt.apt.core
??? org.eclipse.jdt.core
    ??? state.dat
Run Code Online (Sandbox Code Playgroud)

哪里

  • .indexes含有脂肪曼波- JAMBO-的分裂指数树组织包含history.index每个叶子
    • (似乎不有关我的问题) …

java eclipse file

7
推荐指数
2
解决办法
1万
查看次数

Liferay中的Portlet导航

所以我在弄清楚如何在liferay中处理导航时遇到了一些麻烦。我是jsp,portlet和liferay的新手,但我认为我已经用尽所有文档来寻找答案。

我正在寻找一种提交html表单并使用字段设置渲染参数的方法。我想拥有可与常规浏览器导航一起使用的URL,以及可添加书签的URL。我想出了一种方法,可以使用javascript用表单中的新值更新已声明的renderurl,但我正在尝试找出一种更干净的方法。

现在我已经尝试了几种方法..使用此页面

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Validator" %>
<%@ page import="javax.portlet.PortletPreferences" %>

<portlet:defineObjects />


<%
    PortletPreferences prefs = renderRequest.getPreferences();
    String search = ParamUtil.getString(renderRequest, "search");
%>

<portlet:renderURL var="viewURL">
<portlet:param name="jspPage" value="/view.jsp" />
</portlet:renderURL>

<aui:form action="<%= viewURL %>" method="post">
     <aui:input label="search" name="search" type="text" value="<%=search %>" />
     <aui:button type="submit" />
</aui:form>
Run Code Online (Sandbox Code Playgroud)

使用post,我将得到结果URL:

http://localhost:8080/web/10157/home?p_p_id=search_WAR_searchportlet_INSTANCE_Kt9C&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_search_WAR_searchportlet_INSTANCE_Kt9C_jspPage=%2Fview.jsp
Run Code Online (Sandbox Code Playgroud)

如果我将表单更改为get,那么我将获得以下网址:

http://localhost:8080/web/10157/home?_search_WAR_searchportlet_INSTANCE_Kt9C_search=123
Run Code Online (Sandbox Code Playgroud)

但是使用带有参数集的renderURL,我会得到的,这是post和get都会返回的组合:

http://localhost:8080/web/10157/home?p_p_id=search_WAR_searchportlet_INSTANCE_Kt9C&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_search_WAR_searchportlet_INSTANCE_Kt9C_jspPage=%2Fview.jsp&_search_WAR_searchportlet_INSTANCE_Kt9C_search=123
Run Code Online (Sandbox Code Playgroud)

因此,就目前而言,我可以使用带有post的表单,并且ParamUtil.getString将识别数据,但是该链接不可收藏,或者可以使用带有get的表单,将信息保留在url中,但是我无法获取ParamUtil识别数据。即使我可以使用get表单来识别数据,但我真的不想使用它,因为如果我要从其他portlet的表单进行提交,则不会保留该参数。据我了解,RenderURLs保留了这些内容。

请原谅我,如果我对这些事情完全不满意。我是jsp,portlet和liferay的新手,但是我对应该如何做很多这些事情很迷茫。

portlet liferay

5
推荐指数
1
解决办法
3754
查看次数

如何使用powerMock在同一个类中模拟静态和非静态方法?

我有一个简单的案例来说明一个更复杂的案例(哦,Legacy Code,我爱你吗,吟游诗人应该以你的名义唱出美妙的歌曲)。

一组类的图片如下:

  • 实用程序类:
package org.osef.test;

public final class A {

    private static A instance;
    public static String status;

    private A() {
        initPaths();
    }

    public static A getInstance(){
            if(instance==null){
                instance = new A();
            }
            return instance;
    }

    private void initPaths() {
        A.status = "I have been in the method !";
    }
    public String doStuff() {
        return "stuff done ...";
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 调用它的类
package org.osef.test;

public class B {

    public String doBdo() {
        A instance = A.getInstance();
        return instance.doStuff();
    }
} …
Run Code Online (Sandbox Code Playgroud)

java unit-testing easymock powermock

5
推荐指数
1
解决办法
7219
查看次数

为什么@Given不可重复?

我对Cucumber(jvm)都很陌生,这一切看起来都很精致,但是:

我真的不知道如何通过单一方法实现以各种方式(优雅地)编写的多个初始条件(来自各种场景).

例如:

Scenario: I really am bad
    Given I really am inexperienced with Cucumber
    When I try to work
    Then what I produce is of poor quality

Scenario: I am on the way to become good (hopefully)
    Given I am a noob
    When I learn new things
    And I practice
    Then my level improves
Run Code Online (Sandbox Code Playgroud)

由于Given I really am inexperienced with CucumberGiven I am a cuke noob(虽然在语义上不相同)足够接近我以完全相同的方式实现,我希望能够它们链接到相同的方法,但

@Given("^I really am …
Run Code Online (Sandbox Code Playgroud)

java bdd annotations cucumber-jvm

5
推荐指数
1
解决办法
918
查看次数

制作我自己的Eclipse Intro页面

我在创建自己的Eclipse Intro页面时遇到了困难(如此处所示).

似乎我的产品ID有一些问题,但我不知道如何获得产品ID,我试图扩展org.eclipse.core.runtime.products但是当它问我想要注册哪个应用程序时我不知道什么回答,它似乎是问题的一部分......任何人都有任何想法?

eclipse plugins product

4
推荐指数
1
解决办法
4414
查看次数

如何从 Java 访问 Kotlin 的“backtickedFunctions”?

长话短说:

java中是否有一个简单的语法来访问kotlins反引号函数,例如fun `if`(){...}

长版:

在 Kotlin 中,人们可以编写以下类。

class ShapeShifter {
    fun speak() { println("Hello fellow hooman") }
    fun `speakLikeA`() { println("Meow") }
    fun `speakLikeA`() { println("Bwoof !") }
    fun `speakLikeA`() { println("NOOT NOOT ! (you would'nt have so much problems with linux ...)") }
}
Run Code Online (Sandbox Code Playgroud)

这会工作得很好......你所有的 kotlin-ers 同事都可以以你所有的形式与你交谈,如下所示:

ShapeShifter().`speakLikeA`() // would work like a charm
Run Code Online (Sandbox Code Playgroud)

但是当与 java-ist 麻瓜互动时,你的秘密身份将是安全的,因为我很确定 java-ist 只能像这样与你互动:

new ShapeShifter().speak()
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有一种方法可以让 java 普通人访问反引号的 kotlin 函数,而无需诉诸使用黑魔法,例如内省/反射,如下所示:

var tomJedusor = new ShapeShifter();
ShapeShifter.class.getDeclaredMethod("speakLikeA").invoke(tomJedusor); //the forbidden arcane spell …
Run Code Online (Sandbox Code Playgroud)

java syntax idioms language-interoperability kotlin

3
推荐指数
1
解决办法
67
查看次数

HTML空白我想删除

我有一个新问题让我烦恼......

我正在制作一个我想要修复的网页,没有滚动,最重要的是我希望我的主要Div填充aaaaaaaall我的可用空间...

我做了这个代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <title>There is a @#!¤*-ing blank !</title>
    <style type='text/css'>
        html {margin:0px;padding:0px;height:100%;overflow:hidden;border: 3px solid green}
        div {margin:0px;padding:0px;}
    </style>
  </head>

<body onload="document.getElementById('mydiv').style.height=document.getElementsByTagName('html')[0].offsetHeight+'px'"><div id="mydiv" style="margin:0px;padding:0px;width:100%;border: 2px solid red"></div></body> </html>

Run Code Online (Sandbox Code Playgroud)

正如你所看到的,即使我的body padding和div margin设置为0,我的body元素边框和div元素边框之间也有一个空白区域...

我曾经读过"更多关于CSS的Eric Meyer",其中包含了解决这个问题的方法,但是很久以前我不记得了......

任何帮助将不胜感激^^.

html javascript css margin padding

2
推荐指数
2
解决办法
285
查看次数

Symfony无法打开我的sfDoctrineDatabase.class.php

我的问题非常简单,但我看到它时感到迷茫......我目前正在开发一个位于SVN存储库的Symfony项目.

它整天运作良好但突然崩溃了......

现在我无法启动我网站的任何页面.他们都返回了相同的错误消息

Fatal error: sfAutoload::require() [function.require]: Failed opening required '/Applications/MAMP/htdocs/prjAnnuaire/trunk/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineDatabase.class.php' (include_path='.:/usr/share/php:/usr/share/pear:/home/ar3s/ProjetAnnuaire/prjAnnuaire/trunk/plugins/sfPhpExcelPlugin/config/../lib/PHPExcel') in /home/ar3s/ProjetAnnuaire/prjAnnuaire/trunk/lib/vendor/symfony/lib/autoload/sfAutoload.class.php on line 165
Run Code Online (Sandbox Code Playgroud)

如果有人有任何想法,我全都耳朵......

doctrine symfony1 autoload include-path

2
推荐指数
1
解决办法
2438
查看次数