我有一个Java类MyPojo,我有兴趣从JSON反序列化.我已经配置了一个特殊的MixIn类MyPojoDeMixIn,以帮助我进行反序列化.MyPojo只有int和String实例变量结合适当的getter和setter.MyPojoDeMixIn看起来像这样:
public abstract class MyPojoDeMixIn {
MyPojoDeMixIn(
@JsonProperty("JsonName1") int prop1,
@JsonProperty("JsonName2") int prop2,
@JsonProperty("JsonName3") String prop3) {}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试客户端中,我执行以下操作,但当然它在编译时不起作用,因为存在JsonMappingException与类型不匹配相关的问题.
ObjectMapper m = new ObjectMapper();
m.getDeserializationConfig().addMixInAnnotations(MyPojo.class,MyPojoDeMixIn.class);
try { ArrayList<MyPojo> arrayOfPojo = m.readValue(response, MyPojo.class); }
catch (Exception e) { System.out.println(e) }
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过创建一个只包含其中的"Response"对象来缓解这个问题ArrayList<MyPojo>,但是我必须为我想要返回的每个类型创建这些有些无用的对象.
我还在线查看了JacksonInFiveMinutes,但是很难理解有关Map<A,B>我的问题以及它与我的问题有什么关系.如果你不能说,我是Java的新手,来自Obj-C背景.他们特别提到:
除了绑定到POJO和"简单"类型之外,还有一个附加变体:绑定到通用(类型)容器的变体.这种情况需要特殊处理,因为所谓的类型擦除(Java用于以某种向后兼容的方式实现泛型),这会阻止您使用类似Collection.class(不能编译)的东西.
因此,如果要将数据绑定到Map,则需要使用:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
Run Code Online (Sandbox Code Playgroud)
我怎样才能直接反序列化ArrayList?
我正在使用该方法tableView:indexPathForCell来实现自定义委托,该委托可以UITableViewCell根据其UIWebView内部的框架大小动态调整大小.问题是当我试图找出特定单元格的indexPath是什么时tableView:indexPathForCell返回nil:
- (void)trialSummaryTableViewCell:(TrialSummaryTableViewCell *)cell shouldAssignHeight:(CGFloat)newHeight {
NSIndexPath *indexPath = [tableV indexPathForCell:cell];
NSLog(@"tableV: %@\ncell: %@\nindexPath: %@", tableV, cell, indexPath); //<--
// ...
}
Run Code Online (Sandbox Code Playgroud)
这里,tableV不返回nil,单元格不返回nil,但indexPath返回nil.
我究竟做错了什么?
编辑:我-(void)trialSummaryTableViewCell从该tableView:cellForRowAtIndexPath:方法调用
在超类中MyClass:
@interface MyClass : NSObject
@property (nonatomic, strong, readonly) NSString *pString;
@end
@implementation MyClass
@synthesize pString = _pString;
@end
Run Code Online (Sandbox Code Playgroud)
在子类中 MySubclass
@interface MySubclass : MyClass
@end
@implementation MySubclass
- (id)init {
if (self = [super init]) {
_pString = @"Some string";
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
问题是编译器不认为它_pString是成员MySubclass,但我在访问它时没有问题MyClass.
我错过了什么?
我已经在设计模式上考虑了一段时间了,我刚开始看到如何在我的开发工作中更加刻意地将其中一些更加谨慎地融入其中.但是,我仍然对本书开头的MVC处理以及它与书的其余部分的关系感到困惑.
我使用过的大多数框架 - Spring,Yii,ASP.NET,甚至是Objective-C Cocoa(UIKit) - 都适合MVC范例.我得到了MVC,因为对我而言,它是一种分类对象以及它们应该如何相互消息或交互的有用方法.而且,即使你不打算以MVC方式思考,这些框架也会强加给你.
我也觉得我理解设计模式的前提:他们真的不喜欢子类化,他们喜欢抽象接口,他们努力松散耦合.我不能说我完全理解所有的模式或它们是如何有用的,但我对它有了一种感觉.
我的问题是:MVC和设计模式之间的相互作用是什么?他们在MVC应用程序示例的第一章中得到了什么?某些设计模式是否与MVC范例无关?我想知道,例如,Command模式应该如何适应MVC.这似乎非常有用的,但是我们创建了一个CommandModel与CommandController发送给其他控制器?我们只是Command按照书中的规定创建一个对象吗?基本上,我想知道MVC和设计模式的想法是完全不相交的,我只是不明白,或者是否有一些模式不适合模具.
通常,当我从UI类中继承子类时,我将调用感兴趣的超类初始化器.但是,我不确定实现细节NSObject,并且似乎在成员变量方面没有太多进展,所以我想知道:[super init]如果我的子类扩展,我是否需要调用NSObject?
到目前为止,我一直在使用Parcelable对象而没有问题,主要是因为他们的所有成员都是具有writeX()与之相关的方法的类型.例如,我这样做:
public String name;
private Foo(final Parcel in) {
name = in.readString(); }
public void writeToParcel(final Parcel dest, final int flags) {
dest.writeString(name); }
Run Code Online (Sandbox Code Playgroud)
但是现在,如果我有一个Bar成员,事情对我来说有点冒险:
public Bar bar;
private Foo(final Parcel in) {
bar = new Bar(); //or i could actually write some constructor for Bar, this is a demo.
bar.memberString = in.readString();
}
public void writeToParcel(final Parcel dest, final int flags) {
// What do I do here?
}
Run Code Online (Sandbox Code Playgroud)
我是以错误的方式接近这个吗?我应该怎样做我writeToParcel的包裹会员Bar …
几个月前,当我第一次发现webJars时,我非常怀疑,鉴于某些构建/构建系统的巨大复杂性以及js文件发布的频率,它将成为处理客户端依赖关系的可行方式.第二个问题当然不是很有根据,但是我在第一个问题上得到了证明,在花了差不多36个小时之后,现在徒劳地试图让10个scss/css/less类型的webJars和8个JS webJars生活在一个jsDependencies屋檐下.
我发现当你达到JS依赖3,4或5时,你开始进入一个荒谬的timekill循环:
[trace] Stack trace suppressed: run last client/compile:resolvedJSDependencies for the full output.
[error] (client/compile:resolvedJSDependencies) org.scalajs.core.tools.jsdep.JSLibResolveException: Some references to JS libraries could not be resolved:
[error] - Ambiguous reference to a JS library: bootstrap.min.js
[error] Possible paths found on the classpath:
[error] - META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.min.js
[error] - META-INF/resources/webjars/bootstrap3-dialog/1.34.4/examples/assets/bootstrap/js/bootstrap.min.js
[error] originating from: client:compile, client:compile, client:compile, client:compile
[error] - Ambiguous reference to a JS library: bootstrap.js
[error] Possible paths found on the classpath:
[error] - …Run Code Online (Sandbox Code Playgroud) 我对DotNetOpenAuth和OAuth很熟悉,但就Web API开发而言,根据以下标准锁定Web服务的最佳方法是什么:
谢谢!
我想在用户选择微调器值时捕获onClick事件.
我已经尝试实现OnClickListener并使用以下代码:
@Override
public void onClick(final View view) {
if (view == countrySpinner) {
Toast.makeText(this, "Override OK!", 3);
}
}
Run Code Online (Sandbox Code Playgroud)
和绑定:
countrySpinner.setOnClickListener(this);
Run Code Online (Sandbox Code Playgroud)
这编译,但我得到RuntimeException建议我使用OnItemClickListener而不是OnClickListener一个AdapterView.
如何捕获onClick事件?
编辑:使用Execute方法而不是Query/ QueryMultiple方法,我的OUT_SUCCESS参数现在有一个AttachedParam带有OracleParameter返回值的with .因此,如果我只需要检索非游标参数,那么这将起作用.然后我可以使用Execute所有非游标输出参数的程序和Query/ 只QueryMultiple用于光标输出参数的程序.但是,如果我需要调用已存储的过程既光标和非游标输出参数,这是常有的情况?
使用Dapper.NET和OracleDynamicParameters类我已经成功返回并映射了多个IN OUT REF CURSORs,但是我无法获得单个OUT参数的值.
例如,我试图使用以下规范调用存储过程:
PROCEDURE DO_SOMETHING (
OUT_SUCCESS OUT VARCHAR2
)
Run Code Online (Sandbox Code Playgroud)
为此我创建了一个相应的C#类来对其进行建模,其中包含获取OracleDynamicParameters,CommandText等等的方法,还包括每个参数的自动实现属性
public class DO_SOMETHING {
... //code to return parameters, etc
public string OUT_SUCCESS { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下所有语法:
using (var gridReader = Connection.QueryMultiple(nModel.CommandText(), param: nModel.DynamicParameters(), …Run Code Online (Sandbox Code Playgroud) android ×2
inheritance ×2
ios ×2
java ×2
objective-c ×2
ado.net ×1
c# ×1
dapper ×1
iphone ×1
jackson ×1
json ×1
mapping ×1
node.js ×1
nsobject ×1
oauth ×1
odac ×1
oop ×1
oracle ×1
parcel ×1
parcelable ×1
protocols ×1
sbt ×1
sbt-web ×1
scala.js ×1
subclass ×1
superclass ×1
uitableview ×1
uiwebview ×1