如何在XCode iPhone项目中使用非默认钥匙串.
我已经在"代码签名"构建设置中的"其他代码签名标志"中尝试了"--keychain mycerts.keychain".
在Eclipse中,我可以找到哪些方法现在覆盖焦点上的方法声明?
场景:当我在基类(哪个接口)中查看方法时,我想知道方法被覆盖(或实现)的位置.现在我只是制作方法final,看看我在哪里得到错误,但它并不完美.
注意:我了解class hierarchy视图,但我不想通过所有子类来查找哪些使用自定义实现.
我想测量给定Java项目的API演变,特别是新的/重命名的类,新方法,新弃用的方法等.有没有一个工具可以检测到这些变化?
早在2007年,Google GSoc项目就已启动,但是,我无法找到最终的工作.
我的理解是,为了保持源兼容性,Java从不向公共接口引入新方法,因为这会破坏实现接口的现有客户端. Java Release指出了各州
一般而言,该政策如下,但下列进一步列出的任何不兼容性除外:
维护版本(例如1.4.1,1.4.2)不会引入任何新的语言功能或API.它们将保持彼此的源兼容性.
功能发布和主要版本(例如1.3.0,1.4.0,5.0)保持向上但不向下兼容源.
然而,包java.sql和javax.sql继续发展并引入许多不兼容的变化.例如,我注意到以下不兼容的更改(在Java 6中引入):
java.sql.Statement扩展java.sql.Wrapper,需要新的两种新方法.java.sql.Statement 介绍了3种新方法java.sql.PreparedStatement 介绍了19种新方法!java.sql.ResultSet 介绍48种新方法!你知道这些方法是如何以及为什么被添加的?是否java.sql与平台的其他部分区别对待?你知道关于这些新增内容的讨论/ JSR吗?
为非泛型类设置泛型构造函数有什么好处?Java规范允许以下内容:
class NonGeneric {
<T> NonGeneric() { }
...
NonGeneric ref = new <String> NonGeneric();
}
Run Code Online (Sandbox Code Playgroud)
可以提出一个现实的例子来说明它何时提升了班级的类型安全性?首先如何比使用Generic更好.
我知道Java设计者希望构造函数与方法更加一致.鉴于构造函数可能有副作用,泛型构造函数可以使用泛型来改变一些不保留引用的参数,如
<T> NonGeneric(T obj, List<T> list) {
list.add(obj);
// Don't hold a reference to list
}
Run Code Online (Sandbox Code Playgroud) 使用hibernate,我怎样才能坚持使用List<String>字段的类?
考虑以下实体类:
@Entity
public class Blog {
private Long id;
private List<String> list;
@Id
@GeneratedValue
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public List<String> getList() { return list; }
public void setList(List<String> list) { this.list = list; }
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试保存它时,我收到以下错误:
[INFO] An exception occured while executing the Java class. null
Could not determine type for: java.util.List, at table: Blog, for columns: [org.hibernate.mapping.Column(list)]
Run Code Online (Sandbox Code Playgroud)
我尝试添加' @CollectionOfElements' getList(),然后只id保存到库中.没有为列表创建相应的列. …
使用何种方法Thread.sleep()来加速测试.
我正在测试一个网络库,当连接被删除或发生超时错误时,它具有重试功能.但是,库Thread.sleep()在重试之间使用(因此在服务器重启时它不会连接数千次).这个调用显着减慢了单元测试,我想知道选项是什么来覆盖它.
注意,我愿意实际更改代码,或者使用模拟框架来模拟Thread.sleep(),但是我想先听听您的意见/建议.
部署Java独立应用程序以及任何所需的jar依赖项,配置文件和启动脚本的最佳实践(和启用工具)是什么?
是否有任何Maven插件可以轻松发布二进制版本,因此用户不需要使用maven例如?
我刚刚开始在我的测试中使用模拟对象(使用Java的mockito).毋庸置疑,他们简化了测试的设置部分,并且随着依赖注入,我认为它使代码更加健壮.
但是,我发现自己在实施而不是规范的测试中绊倒.我最终建立了期望,我认为这不是测试的一部分.在更多的技术术语中,我将测试SUT(被测试的类)与其协作者之间的交互,并且这种依赖不是合同或类的接口的一部分!
考虑到你有以下内容:在处理XML节点时,假设你有一个方法,attributeWithDefault()如果它可用,则返回节点的属性值,否则它将返回一个默认值!
我会像下面这样设置测试:
Element e = mock(Element.class);
when(e.getAttribute("attribute")).thenReturn("what");
when(e.getAttribute("other")).thenReturn(null);
assertEquals(attributeWithDefault(e, "attribute", "default"), "what");
assertEquals(attributeWithDefault(e, "other", "default"), "default");
Run Code Online (Sandbox Code Playgroud)
那么,在这里我不仅测试attributeWithDefault()遵循的规范,但我还测试了实施,因为我需要它来使用Element.getAttribute(),而不是Element.getAttributeNode().getValue()或Element.getAttributes().getNamedItem().getNodeValue()等
我认为我会以错误的方式处理它,所以任何关于如何改进我对模拟和最佳实践的使用的提示都将不胜感激.
编辑: 测试有什么问题
我做了上面的假设,测试是一种糟糕的风格,这是我的理由.
规范没有指定调用哪个方法.例如,只要正确完成,库的客户端就不应该关心如何检索属性.实施者应该有自由的权利,以他认为合适的任何方式访问任何替代方法(关于性能,一致性等).它的规范Element确保所有这些方法返回相同的值.
重新考虑Element到单个方法接口是没有意义的getElement()(Go实际上很好).为了便于使用,该方法的客户端应该能够只使用Element标准库中的标准.拥有接口和新类只是愚蠢,恕我直言,因为它使客户端代码难看,而且它不值得.
假设规范保持不变并且测试保持不变,新开发人员可能会决定重构代码以使用不同的使用状态的方法,并导致测试失败!那么,当实际实现符合规范时,测试失败是有效的.
让协作者以多种格式公开状态是很常见的.规范和测试不应取决于采用哪种特定方法; 只有实施应该!