Tag: java

setUp()和setUpBeforeClass()之间的区别

当使用JUnit进行unit testing时,有两个类似的方法setUp()和setUpBeforeClass() 。 这些方法有什么区别? 另外, tearDown()和tearDownAfterClass()之间有什么区别? 这里是签名: @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { }

Java枚举 – 为什么使用toString而不是名称

如果你看方法name()的枚举api它说: 返回此枚举常量的名称,与其枚举声明中声明的完全相同。 大多数程序员应该优先使用toString方法,因为toString方法可能会返回一个用户友好的名称。 此方法主要用于特殊情况下,正确性取决于获取确切的名称,从发行版到发行版不会有所不同。 为什么最好使用toString() ? 我的意思是,当name()已经是final时,toString可能会被覆盖。 所以,如果你使用toString,而有人重写它以返回一个硬编码的值,那么你的整个应用程序就closures了。另外,如果你查看源代码,toString()方法返回的就是这个名字。 这是同一件事。

我怎样才能在Java中散列密码?

我需要哈希密码存储在数据库中。 我怎样才能在Java中做到这一点? 我希望能拿到明文密码,添加一个随机盐,然后将盐和散列的密码存储在数据库中。 然后,当用户想要login时,我可以提取他们提交的密码,从他们的账户信息中添加随机的盐,散列它,并查看它是否等同于存储的散列密码与他们的账户信息。

禁用IntelliJ加星标(包)导入?

我是一个迁移的Eclipse IDE用户,正在学习IntelliJ IDEA 9。 默认情况下,Eclipse IDE不会使用加星标导入,直到从同一个软件包中导入99个类,所以几乎不会发生。 但IntelliJ IDEA似乎只是太热衷于这样做,我不能解决如何禁用它。 例如,inputJList然后ALT + ENTER自动导入后,将导入整个javax.swing包,而不仅仅是我指定的类。 我尝试从自动完成中排除javax.swing ,但是这只是停止build议任何 Swing类,这是适得其反。

为什么静态方法被认为是一种方法?

我正在写一个课程的一些代码的解释,并不小心使用的method和function的话交替使用。 我决定回去修改措辞,但是在我的理解中遇到了一个漏洞。 据我所知,一个子程序是一个function如果它不作用于一个类的实例(其作用仅限于其明确的input/输出),是一个method如果它在一个类的实例(它可能会对不纯的实例产生副作用)。 这里有一个很好的讨论这个话题。 请注意,通过接受的答案的定义,一个静态method实际上应该是一个函数,因为一个实例永远不会被隐式传递,并且它不能访问任何实例的成员。 有了这个心态,不应该静态methods实际上是function? 根据他们的定义,他们不会针对某个阶层的特定事例采取行动; 他们只因为关系而与class级“捆绑”。 我已经看到了一些看起来很好看的网站,它们把静态子程序称为“方法”( Oracle , Fredosaurus , ProgrammingSimplified ),所以他们都忽略了术语,或者我错过了一些东西(我的猜测是后者) 。 我想确保我使用正确的措辞。 任何人都可以清除这个?

Eclipse报告“无法加载JNI共享库”

可能重复: 无法加载JNI共享库(JDK) 我无法打开Eclipse,因为我收到了一个提示 无法加载JNI共享库C:\ Program Files文件(x86)\ eclipse \ jre \ bin \ client \ jvm.dll 我在YouTube上find了一种解决scheme, Eclipse无法加载JNI库修复程序 。 他说,你只需要下载一个JRE 7文件夹。 然后,我只需用C:\Program Files (x86)\eclipse\jre\bin\client\jvm.dllreplaceC:\Program Files (x86)\Java\jre7\bin\server\jvm.dll C:\Program Files (x86)\eclipse\jre\bin\client\jvm.dll 。 但是JRE 7链接在哪里?

我如何设置JLabel的背景颜色?

在我的JPanel ,我将JLabel的背景设置为不同的颜色。 我可以看到“testing”一词,它是蓝色的,但背景并没有改变。 我怎样才能让它显示? this.setBackground(Color.white); JLabel label = new JLabel("Test"); label.setForeground(Color.blue); label.setBackground(Color.lightGray); this.add(label);

在Eclipse中debugging时查看完整的string

在debuggingJava代码的同时,视图“variables”和“expression式”中的string只显示一段时间,然后Eclipse显示“…” 有没有办法检查整个string? (这缓解了添加日志语句以供debugging的痛苦)

Java:int数组使用非零元素进行初始化

根据JLS,一个int数组在初始化之后应该被零填充。 但是,我面临的情况并非如此。 这种行为首先发生在JDK 7u4中,并且也出现在以后的所有更新(我使用64位实现)中。 以下代码引发exception: public static void main(String[] args) { int[] a; int n = 0; for (int i = 0; i < 100000000; ++i) { a = new int[10]; for (int f : a) if (f != 0) throw new RuntimeException("Array just after allocation: "+ Arrays.toString(a)); Arrays.fill(a, 0); for (int j = 0; […]

Android – 编写一个自定义(复合)组件

我正在开发的Android应用程序有一个主要的活动已经增长相当大。 这主要是因为它包含一个带3个选项卡的TabWidget 。 每个选项卡都有相当多的组件。 活动必须一次控制所有这些组件。 所以我想你可以想象这个Activity有20个字段(几乎每个组件都有一个字段)。 它还包含了很多逻辑(点击监听器,逻辑来填充列表等)。 我通常在基于组件的框架中做的是将所有东西都分解成自定义组件。 每个自定义组件都将有明确的责任。 它将包含它自己的一套组件以及与该组件相关的所有其他逻辑。 我试图找出如何做到这一点,我在Android文档中发现了一些他们喜欢称之为“复合控制”的东西。 (请参阅http://developer.android.com/guide/topics/ui/custom-components.html#compound并滚动到“复合控件”部分)我想创build一个基于XML文件的这样的组件定义视图结构。 在文档中说: 请注意,就像使用Activity一样,您可以使用基于声明(基于XML)的方法来创build包含的组件,也可以通过代码将它们嵌套在程序中。 那好,这是个好消息! 基于XML的方法正是我想要的! 但它并没有说如何去做,除了它是“像一个活动”…但是我在一个活动中做的是调用setContentView(…)来从XML膨胀的意见。 该方法不可用,如果你例如子类LinearLayout 。 所以我试图像这样手动膨胀XML: public class MyCompoundComponent extends LinearLayout { public MyCompoundComponent(Context context, AttributeSet attributeSet) { super(context, attributeSet); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.my_layout, this); } } 这是有效的,除了我加载的XML已经将LinearLayout声明为根元素。 这导致膨胀的LinearLayout是MyCompoundComponent一个孩子,它本身已经是一个LinearLayout ! 所以现在我们在MyCompoundComponent和它实际需要的视图之间有一个冗余的LinearLayout。 有人可以请我提供一个更好的方法来解决这个问题,避免有一个冗余的LinearLayout实例?