我无法弄清楚为什么我得到一个NullPointerException.我在这里错过了什么?
public class CustomJourneyUserInformation {
public IJourneyDetails journeyDetails;
public IUserDetails userDetails;
public ISubscribeJourney subscribedToJourneys;
}
Run Code Online (Sandbox Code Playgroud)
IJourneyDetails,IUserDetails,ISubscribeJourney都是接口
在一个不同的活动中,我正在打电话
private CustomJourneyUserInformation[] allJourneyDetails;
allJourneyDetails = new CustomJourneyUserInformation[subscribedToJourneys.length];
if (providerDetails[i] != null)
>>> allJourneyDetails[i].journeyDetails = providerDetails[i];
if (userDetails[i] != null)
allJourneyDetails[i].userDetails = userDetails[i];
if (subscribedToJourneys[i] != null)
allJourneyDetails[i].subscribedToJourneys = subscribedToJourneys[i];
Run Code Online (Sandbox Code Playgroud)
我在由>>>>标记的行中得到一个空指针异常
我相信allJourneyDetails[i]在这里是空的.
我目前正在实现Quartz计时器,以允许调度某些数据文件.我有一个抽象DataOutput类,然后实现覆盖不同类型的输出(http,文件等).我已经在两个特化项上实现了接口,但是当我尝试在抽象基础上声明它以创建DataOutput类型的对象时,我遇到了编译错误,所以我可以在运行时处理这些.
这可能吗?
请看一下我的代码.我试图将一些Car对象添加到MutableArray*parkPlace(属性属于Park类)
我期待的结果应如下所示:
CarParkSim[2662:303] Parking: Car Number:1 At:3 o'clok Position:0
CarParkSim[2662:303] Parking: Car Number:2 At:4 o'clok Position:1
CarParkSim[2662:303] Parking: Car Number:3 At:5 o'clok Position:2
Run Code Online (Sandbox Code Playgroud)
但是,我得到的实际结果是这样的:
2012-12-22 12:13:46.085 CarParkSim[2662:303] Parking: Car Number:1 At:3 o'clok Position:0
2012-12-22 12:13:46.087 CarParkSim[2662:303] Parking: Car Number:2 At:4 o'clok Position:0
2012-12-22 12:13:46.088 CarParkSim[2662:303] Parking: Car Number:3 At:5 o'clok Position:0
Run Code Online (Sandbox Code Playgroud)
我确实检查了NSmutablearray,它是空的......似乎把任何东西都推到了堆栈......任何建议?谢谢
无论如何,这里是代码:Park类:
#import <Foundation/Foundation.h>
#import "Stack.h"
#import "Car.h"
@interface Park : NSObject
@property(strong,nonatomic)NSMutableArray *parkPlace;
@property(strong,nonatomic)Car *car;
-(void)carMoveIntoPark:(Car *)car;
@end
#import "Park.h"
@implementation Park
-(void)carMoveIntoPark:(Car *)car
{
if ([self.parkPlace count] …Run Code Online (Sandbox Code Playgroud) 我想实现我在C++项目中的引擎(Unity3D)中看到的行为.
以下代码使用C#(Unity的语言):
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
void Update() {
//Update is called every frame
}
}
Run Code Online (Sandbox Code Playgroud)
由于我无法访问MonoBehavior源,因此我只能猜测Update()是一个可以像这样实现的虚函数.
我想在C++中复制相同的行为.有一个循环,main()一个超级对象将Update()在该循环中调用它的方法,它的所有孩子应该继承这个超级对象,并有可能实现Update()和使用它.
我知道这是一个含糊不清的问题,但我到处寻找答案而没有找到答案.
这是一个例子:
class Base
{
public:
virtual void Update();
};
class Object: public Base
{
public:
void Update();
};
void main()
{
Base* base;
while(1)
{
base->Update();
}
}
Run Code Online (Sandbox Code Playgroud)
结果应该是Object的Update()应该通过Base调用.我100%上面的代码不起作用,这就是为什么我需要一些想法.
我有一个实现数字接口的类.部分内容如下:
class Z implements A, B, C, ... {
@override
public void foo( Bar b ) {
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法,最好是快捷方式,问问Eclipse该方法的界面foo是什么?
(注意:使用Eclipse版Juno)
在尝试将接口的实现强制转换为接口时,我遇到了意外错误("无法转换的类型").
我给了以下界面
public interface IAbc {...}
Run Code Online (Sandbox Code Playgroud)
和另一个类中的以下方法
public class SomeClass {
public doSomething(Iterable<IAbc> abcs) {...}
}
Run Code Online (Sandbox Code Playgroud)
我写了下面的课
public class MyAbc implements IAbc {...}
Run Code Online (Sandbox Code Playgroud)
我在其他地方有这样的方法
public class MyClass {
public Iterable<MyAbc> getMyAbcs() {...}
}
Run Code Online (Sandbox Code Playgroud)
我希望我可以很好地链接这些,如下所示:
public void doSomethingWithThings(SomeClass sc, MyClass mc) {
sc.doSomething(mc.getMyAbcs());
}
Run Code Online (Sandbox Code Playgroud)
但是NetBeans给了我以下错误:
错误:
sc.doSomething(mc.getMyAbcs());
需要不可转换的类型:Iterable
found:Iterable
我尝试过施法,但Iterable<IAbc> abc = (Iterable<IAbc>)mc.getMyAbcs();会导致同样的错误.
如何将接口的Iterable实现传递给期望接口的Iterable的方法?
我创建了一个扩展类Asynctask.从多个活动中调用此类.它从网页获取一些数据.之后,根据url,数据将在onPostExecute方法中处理.现在我使用多个else if语句,但它有点不方便.
有没有办法onPostExecute在创建新的Activity的Activity中定义方法Asynctask.
我认为它可能适用于接口或抽象方法,但我不确定,也不知道如何.
我正在开发一个允许用Lua创建mod的Minecraft mod.我希望用户能够使用他们想要的接口创建TileEntities.目前我使用的是调用已注册Lua文件功能的Base TE,但这不允许他们制作库存和外围设备.
我想有这样的设计:
public interface IDifferentTypes
{
}
public class IntegerType : IDifferentTypes
{
public int value { get; set; }
}
public class StringType : IDifferentTypes
{
public string value { get; set; }
}
public class DateTimeType : IDifferentTypes
{
public DateTime value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是在界面中定义了属性"value".
所以我可以这样说:
IDifferentTypes someInt = GetSomeInt(); // GetSomeInt() returns a IntegerType object
Assert.AreEqual(5, someInt.value);
IDifferentTypes someString = GetSomeString(); // GetSomeString() returns a StringType object
Assert.AreEqual("ok", someString.value);
Run Code Online (Sandbox Code Playgroud)
问题是每种实现的值的类型是不同的,处理它的最佳方法是什么?
我有以下界面:
public interface Gravy {
public List<Giblet> getGiblets();
public Giblet getGiblet(String id);
public int getNumGiblets();
public void addGiblet();
public void removeGiblet(Giblet giblet);
public List<Carrot> getCarrots();
public Carrot getCarrot(String id);
public int getNumCarrots();
public void addCarrot();
public void removeCarrot(Carrot carrot);
public List<Gravy> getGravies();
public Gravy getGravy(String id);
public int getNumGravies();
public void addGravy();
public void removeGravy(Gravy gravy);
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我的作品中有一个重复出现的模式Gravy.甲Gravy对象可以包含内脏,胡萝卜,和其他(较小)肉汁.所有这些都可以添加,删除或查询.
有两点需要注意:
Carrots和Giblets彼此有点共同之处,但两者都与Gravys 有很大不同.
我可能需要稍后添加更多项目(因此需要重构)...
是否可以减少上面的代码,以便"动词"只写一次?
interface ×10
java ×6
c# ×3
polymorphism ×2
.net ×1
abstract ×1
android ×1
c++ ×1
eclipse ×1
inheritance ×1
object ×1
objective-c ×1
overriding ×1
refactoring ×1
reflection ×1
stack ×1
types ×1