如何确定如何调用类XHelper或XUtils?
在我心里 :
Helper类,是一个可以实例化并做一些业务工作的类
Utils类是一个静态类,它在一种实例上执行小的重复操作(来自Apache的utils类ArrayUtils或IOUtils的例子)
我从来没有找到关于帮助器/实用程序类的这些简单问题的良好答案:
为什么我要创建一个单例(无状态)而不是使用静态方法?
如果对象没有状态,为什么需要对象实例?
有人可以建议一种简单的方法来获取对junit测试类中的String/InputStream/File/etc类型对象的文件引用吗?显然,我可以将文件(在这种情况下为xml)粘贴为一个巨大的字符串,或者将其作为文件读取,但是有一个特定于Junit的快捷方式吗?
public class MyTestClass{
@Resource(path="something.xml")
File myTestFile;
@Test
public void toSomeTest(){
...
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Window.ShowDialog()在我的WPF(MVVM)应用程序中打开一个模态窗口,但它允许我使用Windows任务栏(Windows 7)导航到其他窗口.
考虑一下:我在我的应用程序中打开了3个非模态窗口.现在其中一个打开一个模态窗口使用Window.ShowDialog().我也设置Application.MainWindow为模态窗口的所有者.这是因为我使用MVVM消息传递并且消息处理程序打开一个新窗口是集中的App.xaml.cs.窗口打开模态 - 没有问题.但是,Windows 7允许我从任务栏切换到其他应用程序窗口.这导致模态窗口落在另一个窗口后面的情况,我不希望这样.
只要我打开模态,我就无法在其他窗口上做任何事情,但如果模态窗口始终保持在顶部,只要打开它就会很好.有没有办法在模态打开时禁用任务栏切换?仅供参考 - 从应用程序启动的所有打开的窗口在任务栏上显示为单独的条目.
提前致谢!
与此答案相关:https://stackoverflow.com/a/11227902/4714970
在上面的答案中,提到了如何通过避免分支来避免分支预测失败.
用户通过替换以下内容来演示:
if (data[c] >= 128)
{
sum += data[c];
}
Run Code Online (Sandbox Code Playgroud)
附:
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];
Run Code Online (Sandbox Code Playgroud)
这两个是如何等效的(对于特定的数据集,不是严格等同的)?
在类似的情况下,我可以采取哪些一般方法来做类似的事情?它总是通过使用>>和~?
我正在尝试测试一个在单独的线程中工作的方法,简化它是这样的:
public void methodToTest()
{
Thread thread = new Thread()
{
@Override
public void run() {
Clazz.i = 2;
}
};
thread.start();
}
Run Code Online (Sandbox Code Playgroud)
在我的单元测试中,我想测试Clazz.i == 2,但我不能这样做,因为我认为断言是在线程更改值之前运行的.我想使用另一个线程来测试它,然后使用join等待,但它仍然无法正常工作.
SSCCE:
@Test
public void sscce() throws InterruptedException
{
Thread thread = new Thread()
{
@Override
public void run() {
methodToTest()
}
};
thread.start();
thread.join();
AssertEquals(2, Clazz.i);
}
public static class Clazz
{
public static int i = 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为这是因为测试主代码创建了一个等待(加入)第二个线程的线程,但是第二个线程没有完成工作,它创建另一个线程来完成工作然后完成,这继续第一个线程,而第三个线程Clazz.i = 2在断言后执行.
我怎样才能使第一个线程等待它启动的线程以及该线程启动的任何线程?
public static void main(String[] args) throws IOException
{
Scanner in = new Scanner(System.in);
String fileName = in.nextLine();
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("C:/temp/"+fileName+".txt"), "UTF-8"));//Ex thrown
out.close();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个可以处理中文字符到文件名的编写器.所以我可以创建一个名为??.txtexample 的文件.
但是我得到了FileNotFoundException 上面的代码,它对英文字符完全正常,但不适用于汉字.
我按照这里的答案:如何用Java编写UTF-8文件?生成上面的代码,但它不起作用.
任何人都知道如何实现这一目标?
堆栈跟踪:
Exception in thread "main" java.io.FileNotFoundException: C:\temp\??.txt (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
使用NIO:
Path path = Paths.get("C:/temp/"+fileName+".txt");//throws ex
Charset charset = Charset.forName("UTF-8");
Path …Run Code Online (Sandbox Code Playgroud) 当我试图为单元测试创建一个临时文件时,我遇到了这个提到"TemporaryFolder JUnit @Rule"的答案以及一个解释如何使用它的链接.这是这样的:
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
Run Code Online (Sandbox Code Playgroud)
然后 testFolder.newFile("file.txt")
我的问题是@Rule注释是做什么的?
删除注释似乎并未实际更改任何内容.
看到这个问题,每个人都谈论"性能"会如何受到影响,或者当性能成为问题时应该避免例外,等等.
但是我没有看到一个很好的解释,为什么抛出异常对性能不利,这个问题中的每个人似乎都认为这是理所当然的.
我问这个的原因是,我正在尝试优化一个应用程序,并注意到在某些操作上抛出并吞下了几百个异常,例如单击按钮来加载新页面.
我想使用indexOf,但 中的对象List不会是相等的对象,但它们的值相等(即它们相等但不相等)。
我想以indexOf与方法不同的方式进行比较Object.equals。我正在考虑重写 equals 方法以使用 isEquivalent 方法,但我不确定如何执行此操作(如果可能的话)。
我已经尝试了很多变体,但不断收到错误:
List<CustomType> items{
@Override
public boolean equals(Object o)
{
return false;
}
}
= //stuff to populate it
Run Code Online (Sandbox Code Playgroud)
我也看到了这个答案,他们谈论 EqualityComparer's java 中是否有类似的东西?
或者还有其他方法可以实现这一点吗?
java ×9
junit ×3
performance ×2
equality ×1
equals ×1
exception ×1
file ×1
indexof ×1
junit4 ×1
rule ×1
showdialog ×1
singleton ×1
unit-testing ×1
wpf ×1