我正在建立一个(有点受限)Git客户端.要设置存储库,请输入远程存储库的URL.我想检查用户是否具有对该存储库的读写访问权限.如果没有,我提出一个身份验证对话框.
我检查"读"访问用git ls-remote <url>
.
是否有一种类似的方法来检查'写'访问权限,而不首先克隆回购?(我知道我可以git clone <url>
,然后git push --dry-run
)
我正在编写一些JUnit测试,以验证是否抛出了类型MyCustomException
的异常.但是,此异常多次包含在其他异常中,例如在InvocationTargetException中,而InvocationTargetException又包含在RuntimeException中.
什么是确定MyCustomException是否以某种方式导致我实际捕获的异常的最佳方法?我想做这样的事情(见下划线):
Run Code Online (Sandbox Code Playgroud)try { doSomethingPotentiallyExceptional(); fail("Expected an exception."); } catch (RuntimeException e) { if (!e.
wasCausedBy(MyCustomException.class) fail("Expected a different kind of exception."); }
我想避免getCause()
深入调用一些"层",以及类似的丑陋工作.有更好的方法吗?
(显然,Spring有NestedRuntimeException.contains(Class),它可以做我想要的 - 但我没有使用Spring.)
CLOSED: 好的,我猜有一个实用方法真的没有绕过:-)感谢所有回复的人!
在Ruby中,以某种方式映射数组的最具表现力的方式是什么?某些元素被修改而其他元素保持不变?
这是一种直截了当的方式:
old_a = ["a", "b", "c"] # ["a", "b", "c"]
new_a = old_a.map { |x| (x=="b" ? x+"!" : x) } # ["a", "b!", "c"]
Run Code Online (Sandbox Code Playgroud)
如果不够的话,当然会省略"单独"的情况:
new_a = old_a.map { |x| x+"!" if x=="b" } # [nil, "b!", nil]
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
new_a = old_a.map_modifying_only_elements_where (Proc.new {|x| x == "b"})
do |y|
y + "!"
end
# ["a", "b!", "c"]
Run Code Online (Sandbox Code Playgroud)
有没有一些很好的方法在Ruby中执行此操作(或者Rails有一些我还没有找到的方便方法)?
谢谢大家的回复.虽然你总是说服我最好只使用map
三元运算符,但有些人发布了非常有趣的答案!
为什么它(显然)有所作为是否我通过null
直接作为参数,或者传递一个Object
,我分配的价值 null
?
Object testVal = null;
test.foo(testVal); // dispatched to foo(Object)
// test.foo(null); // compilation problem -> "The method foo(String) is ambiguous"
public void foo(String arg) { // More-specific
System.out.println("foo(String)");
}
public void foo(Object arg) { // Generic
System.out.println("foo(Object)");
}
Run Code Online (Sandbox Code Playgroud)
换句话说,为什么第二次调用(已注释掉)foo(...)
未调度到foo(Object)
?
更新:我使用Java 1.6.我可以毫无问题地编译Hemal的代码,但我仍然无法编译.我看到的唯一区别是,Hemal的方法是静态的,而我的方法则不是.但我真的不明白为什么这应该有所作为......?
更新2:解决了.我的班级中有另一个方法foo(Runnable),因此调度员无法明确地选择最具体的方法.(请参阅我在Hemal的第二个答案中的评论.)感谢大家的帮助.
在Java中,我可以将本地"变量"声明为final,例如
void myMethod() {
final String foo = "Hello World!";
foo = "Bye-bye..."; // compile error!!
return;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试更改其值时,从编译器中获取错误.我想宣布一些我的本地"变量"最终,以避免意外改变它们的价值.
这在Objective-C中是否可行?
我想为我的Cocoa程序的GUI编写一些测试.
Cocoa应用程序有没有好的GUI测试框架?我发现的唯一的东西是Squish,其价格为2.400欧元,远远超出我的预算......
有任何想法吗?如何你测试你的可可的GUI?
我有一个"联系人列表"表格视图,其中包含一个"联系人"单元格,其中包含一个电子邮件按钮,在点击时,应该向电子邮件编写者显示该联系人的电子邮件地址.
将UIButton与该单元格的"联系"实例相关联的最佳方法是什么?
我已经为脑海中出现的两种方法创造了答案 - 但我并不满意.您更喜欢哪个,或者更好,哪个更好!
我有一个方法fetchObjects(String)
,期望返回一个Contract
业务对象数组.该className
参数告诉我应该返回什么样的业务对象(当然这在这个解释的情况下没有意义,因为我已经说过我将返回Contract
s,但它基本上是我在真实场景中的情况).所以我从某处获取了一组条目并加载了集合条目的类(其类型由其指定className
).
现在我需要构造要返回的数组,所以我使用Set
的toArray(T[])
方法.使用反射,我构建了一个空的Contracts数组.但是,这给了我一个静态类型的值Object
!接下来我需要将它转换为适当的类型,在本例中是Contract[]
(参见下面列表中的"带星号 - 下划线"部分).
我的问题是:有没有一种方法,以及如何Contract[]
在列表中进行转换,但Contract
仅通过className
(或entriesType
)确定数组元素的类型()?换句话说,我想要做的就是基本上像这样::(entriesType[]) valueWithStaticTypeObject
,其中entriesType被通过classname
参数指定的类替换,即Contract
.
这在某种程度上是不可能的,或者它可以以某种方式完成吗?也许使用泛型?
package xx.testcode;
import java.util.HashSet;
import java.util.Set;
class TypedArrayReflection {
public static void main(String[] args) {
try {
Contract[] contracts = fetchObjects("Contract");
System.out.println(contracts.length);
} catch (ClassNotFoundException e) {}
}
static Contract[] fetchObjects(String className) throws ClassNotFoundException {
Class<?> …
Run Code Online (Sandbox Code Playgroud) 我写了一个类来声明性地描述一系列UIView动画.我的方法采用了一系列动画块并将它们放在一个数组中.所以在我的循环中我想这样做:
[animations addObject:[[block copy] autorelease]];
Run Code Online (Sandbox Code Playgroud)
我首先copy
阻止它移动到堆中,允许它被retain
数组所驱动.然后我自动释放它以放弃所有权(因为数组保留它).
但是,当动画数组被释放时,这会崩溃.(我的理解是引用的块已经被释放了.)
奇怪的是,这有效:
[animations addObject:[block copy]];
[block release];
Run Code Online (Sandbox Code Playgroud)
更新: - ......就像这样:
[animations addObject:[block copy]];
[block autorelease];
Run Code Online (Sandbox Code Playgroud)
为什么?我原本期望所有3个代码片段同样有效.任何解释?
我的自定义控件有一个方法-setValue:animated:,它带有一个animated
标志.
在iOS 4之前,我会编写动画:
if (animated) {
[UIView beginAnimations:@"Foo"];
[UIView setAnimationDuration:5.0];
}
// ... layout views ...
if (animated) {
[UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)
现在我写了这个:
[UIView animateWithDuration:(animated ? 5.0 : 0.0) animations:^{
// ... layout views ...
}];
Run Code Online (Sandbox Code Playgroud)
但是:这导致一些元素没有动画!
我称这个方法不止一次(第一次没有,第二次用动画),所以第二次动画被取消,将我的新帧设置为"硬"(没有动画).
如何使用块方法实现可选动画?
java ×3
objective-c ×2
autorelease ×1
casting ×1
cocoa ×1
collect ×1
exception ×1
final ×1
generics ×1
git ×1
git-remote ×1
github ×1
gui-testing ×1
ios ×1
ios4 ×1
iteration ×1
ls-remote ×1
map ×1
null ×1
reflection ×1
reification ×1
ruby ×1
spring ×1
testing ×1
uikit ×1
uitableview ×1
uiview ×1
variables ×1