不是一个编程问题,但我想我还是会问.
我怎么做到这样蚂蚁不需要在建造之前通过所有的junit测试?在netbeans中,我可以在没有先测试的情况下构建项目.但是,当我运行ant时,它确保我的所有junit测试都先通过.我在netbeans项目目录中从命令行运行ant.我需要修改哪些文件告诉蚂蚁不要这样做?
要添加一些细节,看起来ant脚本会进入build.xml和build-impl.xml文件以确定要执行的操作.build-impl.xml表示不编辑它并编辑build.xml.Build.xml没有任何junit测试选项,所以我想知道在哪里禁用测试.
请告诉我.
谢谢,jbu
我有儿童班,每个班级都有其他成员带来不同类型的价值.可能有LongObject,IntObject,StringObject等.
我将获得一个值,可以是long,int,string等,我必须分别创建一个LongObject,IntObject,StringObject等.
如下所示重载方法会更快(a),或者只使用如下所示的elseif(b)?
它可能不是一个明显的性能差异.可能是重载方法以与if/else类似的方式实现.我不知道.
我也可以听到你们中的一些人说要测试一下.当然,我应该.如果有人知道的话,我也想知道如何在引擎盖下处理这种类型的重载.
请让我知道你在想什么.
谢谢,jbu
一个)
BaseObject getObject(long l)
{
return new LongObject(l);
}
BaseObject getObject(int i)
{
return new IntObject(i);
}
BaseObject getObject(String s)
{
return new StringObject(s);
}
...
Run Code Online (Sandbox Code Playgroud)
b)
BaseObject getObject(Object x)
{
if(value is a long)
return new LongObject((Long)x);
else if(value is an int)
return new IntObject((Int)x);
else if(value is a String)
return new StringObject((String)x);
...
}
Run Code Online (Sandbox Code Playgroud)
编辑:我想我没有完全添加所有细节,有些人抓住了它.对于这两种选择,我仍然需要获取一个对象/值,并从值确定它是什么类型.因此,我仍然需要使用if/else某种甚至使用重载方法.
当队列中没有任何内容并调用take()时会发生什么.API表示该方法将等待,但这是否意味着CPU在队列中出现一个项目或者是否意味着线程会被中断唤醒之前,旋转检查是否为空/非空?如果是前者的情况,我可能想看看队列是否为空以及是否调用thread.yield()来放弃处理器时间.我的问题是,我是否需要调用yield或者是否有一些内部机制为我处理?
其次,中断的异常意味着什么?如果我理解正确,这意味着如果线程A正在执行此方法并且正在等待输入而另一个线程B调用threadA.interrupt(),那么线程A将捕获中断的异常并且可能会暂停执行,如果它很好的话.这是正确的思考方式吗?
新手在这里.我在看公司代码.
似乎A类中没有成员变量但是在A的构造函数中它初始化了一个对象B,即使类A不包含任何类型B的成员变量(或任何成员变量!).
我想我甚至不能理解问题......所以这里发生了什么!?我的直觉是你甚至在尝试初始化它之前需要一个变量.如何在没有对象的情况下初始化对象有可能(或者有什么用呢)?
.H:
class A: public B
{
public:
A(bool r = true);
virtual ~A;
private:
}
Run Code Online (Sandbox Code Playgroud)
的.cpp:
A::A(bool r) : B(r ? B::someEnumeration : B::anotherEnumeration)
{
}
A::~A()
{
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.
谢谢,jbu
请帮我理解以下签名:
err_type funcName(const Type& buffer) const;
Run Code Online (Sandbox Code Playgroud)
所以对于第一个const,这是否意味着Type的内容不能改变或者引用不能改变?
其次,第二个const是什么意思?我甚至都没有暗示.
在此先感谢,jbu
如果我在堆栈上创建一个对象并将其推入列表中,那么该对象将失去作用域(在下面的示例中的for循环之外),该对象是否仍然存在于列表中?如果列表仍然保存对象,那么该数据现在是无效/可能已损坏吗?
请让我知道,请解释理由..
谢谢,jbu
class SomeObject{
public:
AnotherObject x;
}
//And then...
void someMethod()
{
std::list<SomeObject> my_list;
for(int i = 0; i < SOME_NUMBER; i++)
{
SomeObject tmp;
my_list.push_back(tmp);
//after the for loop iteration, tmp loses scope
}
my_list.front(); //at this point will my_list be full of valid SomeObjects or will the SomeObjects no longer be valid, even if they still point to dirty data
}
Run Code Online (Sandbox Code Playgroud)
编辑:那如果它是一个std::list<SomeObject*> my_list
; 而不是列表...在这种情况下它会无效吗?
想象一下,我有方法:
public static void funcA() {...}
public static void funcB()
{
byteBuffer.wrap(someByteArray, 0, someByteArra.length);
}
Run Code Online (Sandbox Code Playgroud)
IN JAVA API:
public static ByteBuffer wrap(byte[]array, int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}
Run Code Online (Sandbox Code Playgroud)
函数链:funcB() - > ByteBuffer.wrap()
我的问题是为什么funcB不需要围绕抛出异常的java api方法执行try-catch块.没有try-catch块,funcB编译得很好.我相信答案与java api方法抛出异常这一事实有关但是因为"抛出IndexOutOfBoundsException"而不是DECLARED
函数链:funcA() - > funcB() - > ByteBuffer.wrap(...)
我的下一个问题是,当我不要改变funcB为"funcB()抛出IndexOutOfBoundsException异常"怎么FuncA的并不需要赶上funcB的抛出的异常?编译器是否深入挖掘并意识到ByteBuffer.wrap(...)未被声明为"wrap()抛出IndexOutOfBoundsException"因此所有调用者实际上不需要捕获任何内容甚至是子调用者(在本例中为funcB)被声明为"funcB抛出IndexOutOfBoundsException"?
对不起,如果那令人困惑或难以理解.
请帮忙.
JBU
假设我在标题中声明了一个对象数组.阵列的大小可能非常大.在我的源文件中,我为我的类创建了构造函数,我想初始化我的数组中的所有对象.如果没有使用零参数构造函数构造这些对象,我被告知这些需要放在我的初始化列表中.
我的问题是,如果我想使用一个循环来初始化这个可能很大的对象数组,那么它不会进入初始化列表,是吗?我不想放入我的初始化列表:str1("1"),str2("2"),...,strn("n").初始化所有这些对象的循环可以放在标题中还是可能放在构造函数的主体中?
请告诉我.我还没有看到这样的例子.
谢谢,jbu
应该是一个新手问题......
我在现有的类A中有现有的代码,我想扩展它以覆盖现有的方法A :: f().
所以现在我想创建类B来覆盖f(),因为我不想只改变A :: f(),因为其他代码依赖于它.
为此,我需要将A :: f()更改为虚拟方法.
我的问题是除了允许动态调用方法(使用B的实现而不是A)之外还有其他任何影响使方法成为虚拟的吗?我打破了某种优秀的编程习惯吗?这会影响试图使用A :: f()的任何其他代码吗?
请告诉我.
谢谢,jbu
编辑:我的问题更多的是让别人的方法虚拟有什么不对吗?即使你没有改变其他人的实现,你仍然需要进入某人的现有代码并对声明进行更改.
我有bash脚本我在windows中运行PowerShell来执行for
循环.每隔一段时间,其中一个循环迭代会挂起,直到我按下键盘上的Enter键.
这不会一直发生,事实上,它很少发生,但它仍然存在.
有趣的是,我的循环内部基本上是time _command_
这样的,所以在我按下回车后,它会告诉我命令运行了多长时间.该命令实际上比循环迭代花费更少的时间来执行 - 因为它因某些奇怪的原因等待键盘输入.
让脚本在一夜之间运行并在早上回来看它没有走得太远是非常烦人的.
有人知道为什么会发生这种情况以及如何解决这个问题?
谢谢,jbu
c++ ×5
java ×4
wait ×2
ant ×1
arrays ×1
bash ×1
chaining ×1
conditional ×1
const ×1
exception ×1
initializer ×1
input ×1
interrupt ×1
junit ×1
list ×1
loops ×1
memory ×1
netbeans ×1
object ×1
optimization ×1
overloading ×1
overriding ×1
polymorphism ×1
powershell ×1
scope ×1
stack ×1
testing ×1
virtual ×1