小编Lin*_*ine的帖子

626
推荐指数
10
解决办法
101万
查看次数

我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

有几次我因为建议使用以下方法而受到批评:

  1. 有必要对setPreferredSize
  2. 了setMinimumSize
  3. setMaximumSize

Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:

对于布局,答案总是相同的:使用合适的LayoutManager

我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:

  1. 我应该完全避免使用这些方法吗?
  2. 已经定义了这些方法的原因.那我什么时候应该使用它们?在哪种情况下?出于什么目的?
  3. 使用这些方法的负面后果究竟是什么?(我只能考虑在具有不同屏幕分辨率的系统之间添加可移植性).
  4. 我认为任何LayoutManager都不能完全满足所有需要的布局需求.我是否真的需要为布局上的每个小变化实现一个新的LayoutManager?
  5. 如果4的答案是"是",那么这是否会导致LayoutManager类的扩散变得难以维护?
  6. 在我需要定义组件子级之间的比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%),是否可以在不实现自定义LayoutManager的情况下实现这一点?

java swing layout-manager

471
推荐指数
8
解决办法
5万
查看次数

抽象工厂模式与工厂方法的区别

我知道有很多关于这两种模式之间差异的帖子,但有一些我找不到的东西.

从我一直在阅读的内容中,我看到工厂方法模式允许您定义如何创建单个具体产品,但是从客户端隐藏实现,因为他们将看到通用产品.我的第一个问题是抽象工厂.它的作用是允许您创建具体对象的族(可能取决于您使用的特定工厂)而不仅仅是单个具体对象?抽象工厂是否只返回一个非常大的对象或许多对象,具体取决于您调用的方法?

我的最后两个问题是关于我在很多地方看到过的单一引言,我无法完全理解:

两者之间的一个区别是,使用抽象工厂模式,类通过组合将对象实例化的责任委托给另一个对象,而工厂方法模式使用继承并依赖子类来处理所需的对象实例化.

我的理解是工厂方法模式有一个Creator接口,它将使ConcreteCreator负责知道要实例化的ConcreteProduct.这是通过使用继承来处理对象实例化的意思吗?

现在关于那个引用,抽象工厂模式究竟是如何通过合成将对象实例化的责任委托给另一个对象?这是什么意思?看起来抽象工厂模式也使用继承来完成构建过程,但是我仍然在学习这些模式.

任何帮助,尤其是最后一个问题,将不胜感激.

design-patterns factory-method factory-pattern abstract-factory

420
推荐指数
8
解决办法
19万
查看次数

是什么原因导致Eclipse中的导入Maven项目默认使用Java 1.5而不是Java 1.6,我怎样才能确保它没有?

我导入了一个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?

java eclipse maven-2 build-error m2eclipse

209
推荐指数
6
解决办法
10万
查看次数

Eclipse和Windows换行符

当我的桌面崩溃时,我不得不将我的Eclipse工作区从Linux移动到Windows.一周后,我将它复制回Linux,代码愉快,致力于CVS.唉,windows换行已经污染了很多文件,所以CVS diff会转储整个文件,即使我换了一两行!

我可以编写一个脚本,但我想知道它是否会弄乱我的Eclipse项目文件.

eclipse newline delimiter

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

java lambda可以有多个参数吗?

在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的功能包,但找不到.这可能吗?

java lambda java-8

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

如何从Collection中获取最大值(例如ArrayList)?

有一个存储整数值的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  

java

121
推荐指数
7
解决办法
43万
查看次数

如何将FileInputStream转换为InputStream?

我只是想一个转换FileInputStream到一个InputStream,我该怎么办呢?

例如

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?; 
fis.close();
Run Code Online (Sandbox Code Playgroud)

java fileinputstream

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

如何在Java中获取所有枚举值?

我遇到了这个问题,我不知道enum我需要迭代其可能值的实际类型.

if (value instanceof Enum){
   Enum enumValue = (Enum)value;
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何从enumValue中提取其可能的值?

java enums

85
推荐指数
7
解决办法
11万
查看次数

使用JAXB的具有属性和内容的XML元素

如何使用JAXB生成以下XML?

<sport type="" gender="">
    sport description
</sport>
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

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