小编Dav*_*son的帖子

Java中的快捷方式"or-assignment"(| =)运算符

我在Java中有很长的比较,我想知道它们中的一个或多个是否真实.比较字符串很长且难以阅读,因此我将其分解以便于阅读,并自动使用快捷操作符|=而不是negativeValue = negativeValue || boolean.

boolean negativeValue = false;
negativeValue |= (defaultStock < 0);
negativeValue |= (defaultWholesale < 0);
negativeValue |= (defaultRetail < 0);
negativeValue |= (defaultDelivery < 0);
Run Code Online (Sandbox Code Playgroud)

negativeValue如果任何默认的<something>值为负,我希望是真的.这有效吗?它会做我期望的吗?我在Sun的网站或stackoverflow上看不到它,但Eclipse似乎没有问题,代码编译和运行.


同样,如果我想执行几个逻辑交叉点,我可以使用&=而不是&&吗?

java assignment-operator or-operator compound-assignment

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

window.onload似乎在加载DOM之前触发(JavaScript)

我遇到window.onload和document.onload事件的问题.我读到的所有内容都告诉我,在DOM完全加载其所有资源之前,这些内容不会触发,似乎这对我来说不会发生:

我在Chrome 4.1.249.1036(41514)和IE 8.0.7600.16385中尝试了以下简单页面,结果相同:两者都显示消息"It failed!",表示myParagraph未加载(因此DOM似乎不完整).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <script type="text/javascript">
            window.onload = doThis();
            // document.onload gives the same result

            function doThis() {
                if (document.getElementById("myParagraph")) {
                    alert("It worked!");
                } else {
                    alert("It failed!");
                }
            }
        </script>
    </head>

    <body>
        <p id="myParagraph">Nothing is here.</p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在外部.js文件中使用比这更复杂的脚本,但这说明了问题.我可以让window.onload设置一个计时器半秒来运行doThis(),但这似乎是一个不优雅的解决方案,并没有回答为什么window.onload似乎没有做什么的问题每个人都这样说.另一个解决方案是设置一个定时器,用于检查DOM是否已加载,如果不是,它将在半秒后调用自身(因此它将继续检查,直到加载DOM),但这对我来说似乎过于复杂.是否有更合适的事件要使用?

dom javascript-events onload getelementbyid onload-event

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

应该在头文件和实现文件(C++)中重复'#include'和'using'语句吗?

我对C++很新,但我的理解是#include语句基本上只是将#included文件的内容转储到该语句的位置.这意味着如果我的头文件中有一些'#include'和'using'语句,我的实现文件只能#include头文件,编译器不介意我不重复其他语句.

那人呢呢?

我主要担心的是,如果我不重复'#include','using',以及'typedef'(现在我想到它)语句,它会从使用它的文件中取出该信息,可能导致混乱.

我现在只是处理小型项目,它不会真正导致任何问题,但我可以想象,在有更多人工作的大型项目中,它可能成为一个重要问题.

一个例子如下:

更新:我的'Unit'函数原型在它们的返回类型和参数中有字符串,ostream和StringSet - 我没有在我的头文件中包含任何只在实现文件中使用的内容.

//Unit.h

#include <string>
#include <ostream>
#include "StringSet.h"

using std::string;
using std::ostream;

class Unit {

public:
    //public members with string, ostream and StringSet
    //in their return values/parameter lists
private:
    //private members
    //unrelated side-question: should private members
    //even be included in the header file?
} ;


//Unit.cpp

#include "Unit.h"

//The following are all redundant from a compiler perspective:
#include <string>
#include <ostream>
#include "StringSet.h"

using std::string;
using std::ostream;

//implementation goes here
Run Code Online (Sandbox Code Playgroud)

c++ using-statement include header-files

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

处理onClick以查看CellTable标头中的复选框

我正在尝试创建一个包含一些文本和一个复选框的列的CellTable,它将用作全选复选框(参见下图,"cb"是复选框).目前我正在使用从Header派生的类并覆盖它的render方法来输出文本和一个复选框.我重写onBrowserEvent()但它只给我onChange事件,除了复选框无法正常工作外,它会正常工作.有没有人对此有任何想法?

+-------+------------+
| col 1 | Select All |
|       |     cb     | 
+-------+------------+
| row 1 |     cb     |
+-------+------------+
Run Code Online (Sandbox Code Playgroud)

我在复选框中遇到的问题是,如果没有选中,则必须单击两次以显示复选标记(至少在Chrome上),即使第一次"已检查"属性为真.单击一下即可正确取消选中它.

这是一些代码:

设置CellTable列:

/** Setup the table's columns. */
private void setupTableColumns() {
    // Add the first column:
    TextColumn<MyObject> column1 = new TextColumn<MyObject>() {
        @Override
        public String getValue(final MyObject object) {
            return object.getColumn1Text();
        }
    };
    table.addColumn(macColumn, SafeHtmlUtils.fromSafeConstant("Column1"));

    // the checkbox column for selecting the lease
    Column<MyObject, Boolean> checkColumn = new Column<MyObject, Boolean>(
            new CheckboxCell(true, false)) {
        @Override
        public Boolean …
Run Code Online (Sandbox Code Playgroud)

gwt celltable

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

什么#,fuzzy意味着在xgettext生成的.pot文件的顶部?

xgettext用于生成.pot文件时,在生成的文件的顶部我得到:

# SOME DESCRIPTIVE TITLE.
...
#, fuzzy
...
Run Code Online (Sandbox Code Playgroud)

什么#, fuzzy意思?

我知道这意味着什么,如果翻译是模糊的(这是质量差),但是这是什么意思在顶部一个的.pot文件?

gettext xgettext

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

在Hibernate Search中索引数据

我刚开始将Hibernate Search与我的Hibernate应用程序集成.每次启动服务器时,都会使用Hibernate Session对数据进行索引.

FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();

List books = session.createQuery("from Book as book").list();
for (Book book : books) {
    fullTextSession.index(book);
}

tx.commit(); //index is written at commit time     
Run Code Online (Sandbox Code Playgroud)

它非常尴尬,服务器需要10分钟才能启动.我是以正确的方式做到这一点的吗?

我写了一个调度程序,它会定期更新索引.这会自动更新现有索引条目,还是创建重复索引?

java hibernate-search

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

从另一个JUnit测试类运行JUnit测试类

我有两个我正在测试的类(让我们称之为ClassA和ClassB).每个都有自己的JUnit测试类(分别是testClassA和testClassB).

ClassA因其正常运行而依赖于ClassB,因此我想确保ClassB在运行testClassA之前通过其测试(否则testClassA的结果将毫无意义).

做这个的最好方式是什么?在这种情况下,它是一个赋值,所以我需要将它保留在两个指定的测试类中,如果可能的话.

如果testClassB的测试未全部通过,我可以/应该从testClassA抛出异常吗?这将要求testClassB以不可见的方式运行,只需向testClassA报告其成功/失败,而不是向GUI(通过JUnit)报告.

我正在使用Eclipse和JUnit 4.8.1

更新:到目前为止,我所管理的最好的是带有测试套件的单独文件,如下所示.这仍然不是我所追求的,因为如果ClassA未通过某些测试,它仍然允许运行ClassB测试.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({testClassA.class, testClassBCode.class})
public class testClassB {
}
Run Code Online (Sandbox Code Playgroud)

junit unit-testing junit4 test-suite

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

从超类指针C++访问子类成员

我有一组自定义类Student对象.CourseStudent和ResearchStudent都继承自Student,而Student的所有实例都是其中一个或另一个.

我有一个函数来遍历数组,确定每个Student的子类型,然后在它们上调用特定于子类型的成员函数.

问题是,因为这些函数没有重载,所以在Student中找不到它们,所以编译器大惊小怪.

如果我有一个指向学生的指针,有没有办法获得指向该学生的子类型的指针?我是否需要在此处进行某种假冒操作以解决编译时错误?

c++ inheritance dynamic-cast virtual-functions static-cast

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

使用C++在VS中查找缺少分号的最有效方法是什么?

找到导致错误的缺失分号的最佳策略是什么?是否有可能有用的自动化工具.

我目前正在使用Visual Studio 2008,但任何环境的一般策略都会很有趣并且更有用.

背景:目前我在C++程序中有一个特别难以捉摸的缺失分号(或括号)导致C2143错误.我的头文件依赖性相当简单,但我似乎无法找到问题.而不是发布我的代码并玩Where Wally(或Waldo,取决于你来自哪里),我认为获得一些可以在这种和类似情况下应用的好策略会更有用.

作为一个侧面问题:C2143错误显示在.cpp文件的第一个方法声明的第一行(即方法的返回类型)中,该文件仅包含其关联的.h文件.除了分号或括号之外的任何东西会导致这种行为吗?

c++ visual-studio-2008

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

将_.filter和_.reject作为单个操作运行,如Haskell的Data.List.Partition

我想根据谓词返回值true或值来将JavaScript数组中的值分成两个单独的数组false.这可以通过使用Underscore或Lo-Dash的两个操作轻松完成:

var values = [1, 2, 3, 4];
var even = function (num) { return num % 2 === 0; };
var evens = _.filter(values, even);
var odds = _.reject(values, even);
Run Code Online (Sandbox Code Playgroud)

这将在每个值上运行谓词两次,这在这里是正常的,但如果values被更大的数据集even替换,并且如果被更加计算成本更高的谓词替换,则可能会出现问题.

我查看了Lo-Dash的文档,但在单个操作中看不到任何可以执行此操作的内容.我可以手动编写这样的功能,但这似乎是一个奇怪的遗漏.有这样的功能我错过了吗?

filtering underscore.js lodash

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