有几次我因为建议使用以下方法而受到批评:
在Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:
对于布局,答案总是相同的:使用合适的LayoutManager
我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:
我知道有很多关于这两种模式之间差异的帖子,但有一些我找不到的东西.
从我一直在阅读的内容中,我看到工厂方法模式允许您定义如何创建单个具体产品,但是从客户端隐藏实现,因为他们将看到通用产品.我的第一个问题是抽象工厂.它的作用是允许您创建具体对象的族(可能取决于您使用的特定工厂)而不仅仅是单个具体对象?抽象工厂是否只返回一个非常大的对象或许多对象,具体取决于您调用的方法?
我的最后两个问题是关于我在很多地方看到过的单一引言,我无法完全理解:
两者之间的一个区别是,使用抽象工厂模式,类通过组合将对象实例化的责任委托给另一个对象,而工厂方法模式使用继承并依赖子类来处理所需的对象实例化.
我的理解是工厂方法模式有一个Creator接口,它将使ConcreteCreator负责知道要实例化的ConcreteProduct.这是通过使用继承来处理对象实例化的意思吗?
现在关于那个引用,抽象工厂模式究竟是如何通过合成将对象实例化的责任委托给另一个对象?这是什么意思?看起来抽象工厂模式也使用继承来完成构建过程,但是我仍然在学习这些模式.
任何帮助,尤其是最后一个问题,将不胜感激.
design-patterns factory-method factory-pattern abstract-factory
我导入了一个Maven项目,它使用了Java 1.5,尽管我将1.6配置为我的Eclipse默认值Preferences->Java->Installed JREs.
当我改变Maven项目以使用1.6 JRE时,它仍然存在从项目使用Java 1.5时遗留的构建错误(我在前面描述了这些构建错误:我在m2eclipse中构建错误但在命令行上没有使用maven2 - 我的m2eclipse是否配置错误?)
我要删除该项目并再次尝试,但我想确保这次它从一开始就使用Java 1.6来查看是否可以消除构建问题.
如何在导入项目时确保项目使用Java 1.6?
当我的桌面崩溃时,我不得不将我的Eclipse工作区从Linux移动到Windows.一周后,我将它复制回Linux,代码愉快,致力于CVS.唉,windows换行已经污染了很多文件,所以CVS diff会转储整个文件,即使我换了一两行!
我可以编写一个脚本,但我想知道它是否会弄乱我的Eclipse项目文件.
在Java中,是否可以让lambda接受多种不同的类型?
即:单变量工作:
Function <Integer, Integer> adder = i -> i + 1;
System.out.println (adder.apply (10));
Run Code Online (Sandbox Code Playgroud)
Varargs也有效:
Function <Integer [], Integer> multiAdder = ints -> {
int sum = 0;
for (Integer i : ints) {
sum += i;
}
return sum;
};
//....
System.out.println ((multiAdder.apply (new Integer [] { 1, 2, 3, 4 })));
Run Code Online (Sandbox Code Playgroud)
但是我想要一些可以接受许多不同类型参数的东西,例如:
Function <String, Integer, Double, Person, String> myLambda = a , b, c, d-> {
[DO STUFF]
return "done stuff"
};
Run Code Online (Sandbox Code Playgroud)
主要用途是在函数内部使用小内联函数以方便使用.
我查看了谷歌并检查了Java的功能包,但找不到.这可能吗?
有一个存储整数值的ArrayList.我需要在此列表中找到最大值.例如,假设arrayList存储的值是:10, 20, 30, 40, 50并且最大值将是50.
找到最大值的有效方法是什么?
@Edit:我刚刚发现了一个我不太确定的解决方案
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(100); /* add(200), add(250) add(350) add(150) add(450)*/
Integer i = Collections.max(arrayList)
Run Code Online (Sandbox Code Playgroud)
这会返回最高值.
另一种比较每个值的方法,例如 selection sort or binary sort algorithm
我只是想一个转换FileInputStream到一个InputStream,我该怎么办呢?
例如
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
Run Code Online (Sandbox Code Playgroud) 我遇到了这个问题,我不知道enum我需要迭代其可能值的实际类型.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何从enumValue中提取其可能的值?
如何使用JAXB生成以下XML?
<sport type="" gender="">
sport description
</sport>
Run Code Online (Sandbox Code Playgroud)