小编Bi *_*Act的帖子

Java中这些"通用"语法之间的区别

考虑一下:

public abstract class AbstractHibernateDao< T extends Serializable > {
  private T clazz;
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

public abstract class AbstractHibernateDao< T extends Serializable > {
    private Class< T > clazz;
}
Run Code Online (Sandbox Code Playgroud)

我能够编译两者 - 所以我肯定在这里做了一些基本的检查.

java generics

5
推荐指数
2
解决办法
269
查看次数

为什么受保护的方法不可见?

Java专家,我真诚地感谢任何见解!

我的包中有一个带有受保护方法的抽象类。我在同一个包中还有这个类的子类。现在,当我尝试从包外部的类实例化子类,并在子类实例上调用受保护的方法时,Eclipse 抱怨受保护的方法不可见。

我认为,受保护的方法将对所有子类可见 - 包内或包外 - 只要类可见性不限制它 - 在这种情况下,父类和子类都是公共的。我缺少什么?提前致谢!

package X;
public abstract class Transformation {
  protected OutputSet genOutputSet (List list) {
    ..
  }
}
Run Code Online (Sandbox Code Playgroud)


package X;
public class LookupTransformation extends Transformation {
}
Run Code Online (Sandbox Code Playgroud)


package Y;
import X.*;
public class Test {
  public static void main(String[] args) {
    List<field> fld_list = new ArrayList();
    ..
    LookupTransformation lkpCDC = new LookupTransformation();
    OutputSet o = lkpCDC.genOutputSet(fld_list); // Eclipse errors out here saying genOutputSet from the Type Transformation is not visible. WWWWWWWWHHHHHAAAATTTTTT????
  } …
Run Code Online (Sandbox Code Playgroud)

java

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

Effective Java书籍线程中的Builder模式是否安全?

我正在阅读'有效的java' - 它建议在类有几个可选的构造参数时使用构建器模式.合理的是它有优势 -

'伸缩模式' - 它基本上为一个构造函数提供了需求模式,另一个带有必需的+ 1个可选项,另一个带有'required + 2 optional'等等 - 作者认为当可选参数变得难以读取和写入时失去控制

'Javabeans'模式 - 它使用一个无参数构造函数,然后为每个参数运行一个setter - 这里的缺点是线程安全 - 因为该对象经过了几个方法 - 并且可能在构造时可访问,导致远离的部分出现意外行为代码

推荐的模式 - 构建器 - 在类中使用带有可选参数的"静态"内部类成员 - 客户端在"java beans"样式构造中构建"构建器",然后调用基本上使用构建器成员进行设置的类构造函数它的领域

唷!

我的问题:鉴于构建器是静态成员,应用程序中的其他线程是否也无法同时访问并可能更改构建器属性?导致意外行为?

没有线程编程的经验所以请原谅我这是一个愚蠢的问题

java

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

标签 统计

java ×3

generics ×1