当前位置: 首页 > 面试题库 >

违反Java泛型命名约定?

阎京
2023-03-14
问题内容

我有一个接口,其声明如下:

/**
* @param T - the type of entity.
* @param C - the type of entity container will be returned.
*/
public interface FindByNamedQuery<T extends Serializable, C extends Collection<T>> extends Command {
    C executeNamedQuery(String namedQuery);
}

我想知道是否可以(应该)打破Java命名约定来做到这一点:

public interface FindByNamedQuery<ENTITY_TYPE extends Serializable, RETURNED_CONTAINER extends Collection<ENTITY_TYPE>> extends Command {
    RETURNED_CONTAINER executeNamedQuery(String namedQuery);
}

问题答案:

自1990年代中期以来,我开始反对使用单字符约定。

我发现可读性更高的名称。这有助于理解泛型类型的实现和接口。

对于Java,歧义性问题似乎被夸大了。几乎没有全大写的类名。常量与类名不在同一上下文中使用。

的确,@ param
JavaDoc元素可以提供更长的描述。但是,JavaDoc不一定是可见的也确实如此。(例如,Eclipse中有一个内容助手,用于显示类型参数名称。)

例如,比较:

public final class EventProducer<L extends IEventListener<E>,E> 
    implements IEventProducer<L,E> {

至:

public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT> 
    implements IEventProducer<LISTENER, EVENT> {

尽管Sun /Oracle建议使用单字符名称作为约定,但是可以更改约定。挑战该公约的后果很小。如果您和您的团队更喜欢使用有意义的名称作为类型参数,那么我个人会这样做。

编辑(2015)

GoogleJava样式允许以T结尾的单字母名称和类似多字符类的名称。

5.2.8类型变量名

每个类型变量以两种样式之一命名:

  • 单个大写字母,可选后跟单个数字(例如E,T,X,T2)

  • 以类的形式使用名称(请参见第5.2.2节,类名称),后跟大写字母T(例如:RequestT,FooBarT)。



 类似资料:
  • 问题内容: 我的完整变量名称是“唯一代码”,但是我希望此变量是“ ucode” -ish。 那么考虑Java命名约定是正确的吗? 编码 uCode UCode 问题答案: 请参阅编码约定。对于变量,建议使用驼峰式大小写。回覆。命名,我本以为 将是最合乎逻辑的选择(我知道那不在您的选择列表中)。任何变体在我看来都是 unicode 的缩写,我认为这是一种误导。以上不是一个太长的名称(例如,它不是Ab

  • 我正在使用Spring和Hibernate,我得到了这个例外。以下是我试图获得的:我有User和UserSettings类,它们以OneToMany和ManyToOne注释为界,如下所示: 现在,我想为用户添加设置,我是这样做的: 问题来了:UserSettings中的用户持有旧设置和新设置的集合(设置,我刚刚创建并想要添加),但旧设置持有用户的集合,其中没有新设置。我想这就是为什么我会遇到异常,

  • 我有一个MathematicsAnswer引用的实体数学。如果对数学执行post请求,我会得到一个例外,即MathsAnswer上的字段不能为空。但我确实在球场上跳了起来。拜托,我需要这个解决方案<代码>java.sql。SQLIntegrityConstraintViolationException:列'question_id'不能为空。 sql架构: 实体类: MathsAnswers.jav

  • 问题内容: 我在一个Java Web应用程序上工作,该应用程序使用Spring进行依赖注入,并使用JMock来模拟单元测试中的这些依赖。 目前,在如何命名所使用的某些接口方面,我们的团队还处于不同意见。命名域中具有多个实现的接口没有问题,这很简单。但是,当涉及到我们只有一个实现并且打算将来仅拥有一个实现的接口时,我们遇到了麻烦。 我们拥有此类接口的原因纯粹是为了模拟,例如,我们有在单元测试中模拟的

  • 问题内容: 在Java中,使用“ 非法 ”(如)与“ 无效 ”(如)之间在语义上有区别吗? 在分配过程中,编写的子类来表示一系列无法​​分词的输入字符变得很有用,我想知道约定是使用还是。 到目前为止,我能找到的唯一区别是似乎更喜欢“非法”,而更喜欢“无效”。但是,也存在的子类。 问题答案: 您可以 合法 使用API​​并仍然拥有 无效 数据;都是语义。

  • 问题内容: 我遇到了一个项目有两次相同的.jar(对于我来说,是el-api.jar v2.1)两次的问题,因此,当我尝试使用Tomcat 6运行项目时,出现了以下错误堆栈。 我发现了 http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses- directive/ 但这没有用,因为解决方案影响了我项目的太多部分。 我无