小编orb*_*ish的帖子

Java成员枚举类型是否应该大写?

这里的肛门问题:我们有Java枚举,它们是自己的类,以及作为类成员的枚举:

public enum reportType { ...
Run Code Online (Sandbox Code Playgroud)

每次我看到它都会刺激我*因为当我看到它在声明中使用时,它是一个类型,并且类型应该大写.但是当我试图利用它时,Eclipse警告我不应该将字段名称大写.我认为Eclipse可能比我更了解官方的Java约定,但它似乎并不正确.甚至翻阅了Java约定文档,但没有看到引用这个问题.

  • 没有双关语意图

java eclipse enums coding-style naming-conventions

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

将Oracle表限制为单行的简单约束

我正在寻找一种将应用程序配置表限制为1行的简单方法.我知道我可以使用包含子查询的虚拟列或顶部的物化视图来执行此操作,但实际上它是一个简单的表我想要一个约束,它不需要更多的行来实现而不是创建表.

我想到的最简单的方法是将ID字段设置为1,并且检查约束ID必须为1 - 但这会给表添加一个令人困惑的额外字段,所以我希望有一些显而易见的东西我缺少,像一个检查约束,其中UNIQUE_FIELD = MAX(UNIQUE_FIELD),这是不允许的.

sql oracle database-design referential-integrity oracle11g

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

尝试使用PowerMock模拟静态系统类会产生VerifyError

我试图模拟JOptionPane静态方法,并陷入Java.lang.VerifyError.所有版本都是最新版本,因为我刚刚下载了PowerMock for Mockito及其所有依赖项.

我不能使用前一个问题给出的答案,包装类和子类包装器 - 这是我们的应用程序.此时我在PowerMock上投入了相当多的时间,我不想重新开始.

有没有办法解决这个错误?我在指令中尝试了"模拟静态方法"和"模拟系统类".我不能再往前走,因为我所做的就是@RunWith(PowerMockRunner.class)和@PrepareForTest(My.class).

我发现我可以通过任何对扩展JPanel的类的引用来解决这个问题.这是创建问题的最小测试(我在Boffo和JPanel上使用PrepareForTest得到了相同的例外):

import javax.swing.JPanel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
//@PrepareForTest(JPanel.class)
@PrepareForTest(TestCase.Boffo.class)
public class TestCase {

    @SuppressWarnings("serial")
    public static class Boffo extends JPanel {}

    @Test
    public void test() throws Exception {
        new Boffo();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我尝试运行测试时遇到的异常:

java.lang.VerifyError: (class: javax/swing/plaf/metal/MetalLookAndFeel, method: getLayoutStyle signature: ()Ljavax/swing/LayoutStyle;) Wrong return type in function
    at javax.swing.UIManager.setLookAndFeel(Unknown Source)
    at javax.swing.UIManager.initializeDefaultLAF(Unknown Source)
    at javax.swing.UIManager.initialize(Unknown Source)
    at javax.swing.UIManager.maybeInitialize(Unknown Source)
    at javax.swing.UIManager.getUI(Unknown Source)
    at javax.swing.JPanel.updateUI(Unknown Source)
    at javax.swing.JPanel.<init>(Unknown Source)
    at javax.swing.JPanel.<init>(Unknown …
Run Code Online (Sandbox Code Playgroud)

java junit swing unit-testing powermock

8
推荐指数
1
解决办法
4864
查看次数

这个Groovy构造是做什么的,语法是如何工作的?

在Groovy中进行一些数据驱动的测试时遇到了一些奇怪的事情.如果重要,这是在Spock测试中.

我认为这是列表应该工作的方式:

    def list = [[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]]

    println list[0]
Run Code Online (Sandbox Code Playgroud)

生产:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我不小心做了这样的事情:

    def whut = [[1, 2, 3]
                [4, 5, 6]
                [7, 8, 9]]

    println whut[0]
    println whut
Run Code Online (Sandbox Code Playgroud)

哪个输出:

[null, null, null]
[[null, null, null]]
Run Code Online (Sandbox Code Playgroud)

好吧,我可以看到Groovy不喜欢没有逗号的声明 - 但它编译,所以这是什么?

以下是关于这种语法的真正原因:

    def inputz = [
            [1, 0.631226308, 0.631226308, 0.631226308, 1, 0, 0.240426243]
            [1, 0.312284518, 0.312284518, 0.312284518, 1, 1, 1          ]
            [3, 0.823506476, 0.31230335,  0.631237191, 1, 1, 0          ]
            [4, 0.934875788, 0.486395986, 0.66732053,  3, …
Run Code Online (Sandbox Code Playgroud)

groovy spock

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

IntelliJ调试工具窗口从Console切换到Debugger

这可能听起来像一个小问题,但它完全弄乱了我的工作流程:

我有一个微服务,我经常重新启动刷新更改.我在调试模式下启动,并使用调试工具窗口左上角的弯曲箭头来停止/启动该过程.

在"调试"窗口中,有两个选项卡,Debugger和Console.几周以来,我把它保存在Console上,我可以看到服务在启动时运行,我知道什么时候开始点击端点.突然之间,每当我启动时,它都会切换到Debugger选项卡,这意味着我必须手动切换回来.

没有关于此的文档,也没有找到任何谷歌搜索.有没有人可以试试?

谢谢

更新:

我首先关注Console(右侧选项卡),然后切换到Debugger(左侧选项卡).在Console的上下文菜单中有一个"Focus on startup",但它没有任何效果.

在此输入图像描述

intellij-idea intellij-14

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

如何为grails 2.4中的特征编写spock单元测试用例?

我正在使用Traits来制作我的控制器DRY.我想使用Spock对Trait类进行单元测试.这是我的样本特征和Spock测试用例:

trait SomeTrait {
    public void checkSomething (Closure c ){
        // Do some operation
        c.call
    }
}

@TestMixin(GrailsUnitTestMixin)
class SomeTraitSpec extends Specification {
     void "test checkSomething "(){
        setup: 
        MockedClass mockedObj = new MockedClass()
        def x=0
        def c = {
            x=1
        }

        when:
        mockedObj.checkSomething(c)

        then:
        assert x==1
    }
 }
class MockedClass implements PermissionTrait {
     // some thing   
    }
Run Code Online (Sandbox Code Playgroud)

由于trait是一个接口,我在我的测试用例中有一个Mocked类正在实现Trait,我创建了一个这个Mocked类的对象并调用我要测试的Trait方法.这是正确的方法,如果不是,请用恰当的例子指出正确的方向.

grails unit-testing traits spock grails-2.4

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

Flyway Info屏幕状态是未来,而不是缺失

由于我需要交换进出的一些公司特定功能,我有时会迁移在以后运行"info"或"migrate"时sql目录中不存在的脚本.我只是注意到它的显示方式不一致:

+----------------+----------------------------+---------------------+---------+
| Version        | Description                | Installed on        | State   |
+----------------+----------------------------+---------------------+---------+
...
| 4.1            | Add new reports synonyms   | 2013-05-31 16:38:22 | Success |
| 4.1.1          | BRNC Add new reports synon | 2013-05-31 16:38:22 | Missing |
| 4.2            | Convert old DATA to DATA2  | 2013-05-31 16:38:22 | Success |
| 4.2.1          | BRNC Convert old DATA to D | 2013-05-31 16:38:22 | Future  |
+----------------+----------------------------+---------------------+---------+
Run Code Online (Sandbox Code Playgroud)

因此,"成功"意味着脚本已经运行,"缺失"意味着它们已经运行并且不再存在.但"未来"是什么意思呢?

这与问题类似但不完全相同:

迁移脚本的状态是"未来"

从来没有正式回答,但Axel Fontaine在评论中表示这已被修复.我查了一下,我的罐子(3/18)比他的评论(3/2)晚了.

flyway

6
推荐指数
1
解决办法
4220
查看次数

如何使用Git存储库作为爆炸战争?

我在以下情况......

我习惯于将一个Subversion服务器子项目检入JBoss作为爆炸战:在我的情况下,我调用一个目录Blah.war,把它放在C:\ jboss-6.1.0.Final\server\default \部署\ Blah.war,JBoss选择它.

我在用Git做这件事时遇到了麻烦.我正在推出的SVN存储库如下所示:

.../Project/trunk/Services
.../Project/trunk/Web
Run Code Online (Sandbox Code Playgroud)

如果我将整个项目检查到deploy /文件夹中,则顶部不会有.war目录.显然,我无法检查make trunk /进入我的deploy /目录.我曾想过使用某种符号链接,但看不到这在Windows中有效.

有谁知道怎么做?我一直听到有关DVCS的好消息,但如果我无法处理服务器开发用例,Git对我来说毫无用处.

java git jboss war exploded

6
推荐指数
1
解决办法
310
查看次数

有没有一种方便的方法来获取 Spring Bean/服务的名称?

我可以执行 SomeSpringService.class.getSimpleName() 并小写第一个字母来获取默认的 bean 名称,但我想知道是否有一个简单的 Spring 函数可以为我找到这个名称?简单的意思是我没有获得应用程序上下文,或构建工厂等。

谢谢

更新:当前黑客

@Service
public class ServiceSelector
{
   @Autowired
   Map<String, IThing> implementations;

   public SomethingInterface getDecisionStrategy(AnEnum type)
   {
      SomethingInterface something;

      switch (type)
      {
        case ONE:
           implementation = findInstance(Impl1.class);
           break;
        case TWO:
           implementation = findInstance(Impl2.class);
           break;
         default:
            implementation = findInstance(Impl2.class);
      }
      return implementation;
   }

   private SomethingInterface findInstance(Class clazz)
   {
      String className = clazz.getSimpleName();
      String defaultBeanName = Character.toLowerCase(className.charAt(0)) + className.substring(1);
      return implementations.get(defaultBeanName);
   }
}
Run Code Online (Sandbox Code Playgroud)

java spring

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

TortoiseGit 克隆的 SVN 存储库为空

注意:我在 CLI git/git-svn 中看到过有关此情况的问题,但在 TortoiseGit 中没有看到任何问题。

我下载并安装了 Git 和 TortoiseGit。我已经有一个远程 SVN 存储库,并且安装了 TortoiseSVN,如果这有什么区别的话。

创建空目录后,我使用右侧上下文菜单,如下所示:

  • 克隆
  • 输入我的 SVN 存储库的 URL
  • 进入我刚刚创建的本地目录
  • 单击“来自 SVN 存储库”
  • 取消选择标签和分支,因为我的 SVN 存储库没有它们
  • 不选中“发件人:”框(稍后会详细介绍)

当我点击“确定”时,会弹出一个窗口,显示它正在连接到存储库,并且它会滚动浏览所有修订版本,直到 r 1693,这是我的最新版本。它显示“成功”,并且我的本地文件夹中有一个 .git 目录。但没有文件。

我按如下方式摆弄它:

  • 拿来
  • SVN 获取
  • SVN 变基
  • 将修订号更改为 0
  • 将修订号更改为 1
  • 将修订号更改为我的最新版本

SVN Fetch 似乎是显而易见的选择。当我更改修订版号时,克隆操作失败并显示以下消息:

git did not exit cleanly (exit code 1) (16078 ms @ 12/16/2013 10:31:27 AM)
Run Code Online (Sandbox Code Playgroud)

我要开始摆弄 CLI,但我怀疑我也会遇到同样的问题。毕竟这是一个非常基本的操作。感谢您的帮助。

svn git clone git-svn tortoisegit

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