标签: implementation

实施进口

首先,我不是一个Java人,但我发现表面上看起来与导入工作方式不一致的东西.

假设你有一个文件,在这个文件中你有你的主要功能,你也定义的类美孚,现在不同的实现的美孚也存在于一个包.假设您要在功能中使用这两个版本.

你不能从它的包中显式导入Foo,即import mypackage.Foo;

因为这会导致与文件中本地定义的类冲突,所以在编译时会生成错误.

可以做的是导入整个包,即导入mypackage.*;

这将起作用,您可以使用完全限定名称访问Foo,使用简单名称将导致使用本地Foo.我看到的不一致是,前者生成错误(您导入了一个类,导入的唯一目的是能够使用简单名称而不是完全限定名称),后者甚至不会导致警告.

我原本以为这两种情况都会产生一个警告,即你可能正在使用错误的类,因为它在2个地方定义,或者import语句是多余的,因为简单名称的使用将解析为本地定义的类,而不是导入的一.

所以我的问题是:是否存在以这种方式实施的潜在原因?

是的,这是一个异常情况,我明白这一点.

java import implementation

1
推荐指数
1
解决办法
200
查看次数

为什么?Redeclare实现接口的东西?!在VB.NET中

我在VB.NET v2工作

我有一个接口IMyInterface,这个接口实现了一个方法MyMethod.

我有一个对象MyObjectBase.该对象包含一个(相同)方法MyMethod.

1)如果现在我MyObject Inherits MyObjectBase Implements IMyInterface 需要我重新定义?(阴影,覆盖)MyMethodMyObject课堂上?

2)如果相反,MyMethod我有一个MyEvent 事件的方法呢?

谢谢.

vb.net events implementation interface .net-2.0

1
推荐指数
1
解决办法
1044
查看次数

如何在没有"实现LocationListener"的情况下使用LocationListener?

我终于到达了一个应用程序,它获得了用户的GPS位置,但我实现了LocationListener.它工作正常,但我需要这样做而不实现它,因为我必须做一个不实现方法的类.

我搜索了很多教程并检查了很多网站,我尝试将我的代码转换为不实现LocationListener,但我不能这样做,我测试的每件事都破坏了我的应用程序并停止获取用户的GPS位置.

请问,如果有专家对此可以转换我的代码而不使用"实现LocationListener"我将被授予他

这是要转换的代码:

public class GpsMiniActivity extends Activity implements LocationListener{

private LocationManager mLocMgr;
private TextView tv1;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FrameLayout rl = new FrameLayout(this.getApplicationContext());
    LinearLayout ll= new LinearLayout(this.getApplicationContext());
    ll.setOrientation(LinearLayout.VERTICAL);

    setContentView(rl);
    rl.addView(ll);

    tv1=new TextView(getApplicationContext());
    ll.addView(tv1);

    //setContentView(R.layout.main);
    mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
    mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            500, 0, this);
}
@Override
public void onLocationChanged(Location location) {
    tv1.setText("Lat " +   location.getLatitude() + " Long " + location.getLongitude());
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, …
Run Code Online (Sandbox Code Playgroud)

java implementation android

1
推荐指数
1
解决办法
5806
查看次数

更好的避免施法的方法?

我有界面Foo

public interface Foo {
    public void test();
}
Run Code Online (Sandbox Code Playgroud)

类FooChild实现了接口Foo.

public class FooChild implements Foo {

    @Override
    public void test() {...}

    public void test2() {...}
}
Run Code Online (Sandbox Code Playgroud)

我必须在代码中的某个地方调用函数test2.

Foo f = new FooChild();
((FooChild) f).test2();
Run Code Online (Sandbox Code Playgroud)

我真的很讨厌将类接口转换为类.

所以我添加了另一个界面栏.

public interface Bar extends Foo {
    public void test2();
}

public class FooChild implements Bar {

    @Override
    public void test() {...}

    @Override
    public void test2() {...}
}
Run Code Online (Sandbox Code Playgroud)

现在我将test2()调用为接口而不是类.

Foo f = new FooChild();
((Bar) f).test2();
Run Code Online (Sandbox Code Playgroud)

我可以将函数test2添加到接口Foo,但实现Foo的类太多了.

如果我添加该函数,我必须向所有实现Foo的类添加代码.

虽然我可以这样做,但实际上我没有编辑Foo的权限.

有没有更好的方法来解决这个问题?(希望没有铸造)

编辑:f作为方法参数传递.

正如乔恩所说,我应该更加具体.对困惑感到抱歉.

public void doSomething(Foo …
Run Code Online (Sandbox Code Playgroud)

java inheritance implementation casting interface

1
推荐指数
2
解决办法
3128
查看次数

Perl:如何声明和实现函数`say`

简单的问题:

我想写一个像这样的函数say.

但它有一个不好的功能:文件句柄.

       say FILEHANDLE LIST
       say FILEHANDLE
       say LIST
       say 
Run Code Online (Sandbox Code Playgroud)

如何申报?可能吗?

PS:我找到了一个例子myopen(*;$),但这不是一回事.
PPS:我在旧的Perl版本中需要这个功能,因为它写起来很烦人print "\n"

谢谢!

perl implementation declaration

1
推荐指数
1
解决办法
453
查看次数

Xcode告诉我,我有一个"不完整的实现"

我的老师给了我这个main.m,我必须编写.h和.m方法.在我的.m(非主要)文件中,我收到了来自Xcode的"不完整实现"警告.我为所有被调用的方法制定了方法,所以我无法弄清楚它为什么这么说.以下是我无法修改的代码:

#import <Foundation/Foundation.h>
#import "ChutesAndLadders.h"
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        ChutesAndLadders *cl = [[ChutesAndLadders alloc]init];
        [cl initBoard];
        [cl makeChutes:10];
        [cl makeLadders:10]
        int chutes=0;
        int ladders=0;
        for(int i=0;i<cl.board.count;i++){
            NSString * cell = (NSString *)[cl.board objectAtIndex:i];
            int additionalSpaces = (int)[cl addToMove:cell];
            if(additionalSpaces>0)
                ladders++;
            else if (additionalSpaces<0)
                chutes++;
        }
        [cl printBoard];
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我编码的.h,我相信它没关系:

#import <Foundation/Foundation.h>
@interface ChutesAndLadders : NSObject{
    @private
    NSMutableArray * board;
}
@property (readwrite, retain) NSMutableArray *board;
-(id) initBoard;
-(NSString *)addToMove: (NSString *) …
Run Code Online (Sandbox Code Playgroud)

xcode implementation objective-c

1
推荐指数
1
解决办法
1129
查看次数

Haskell:输入'='的解析错误

我一直在接受这个消息,我做错了什么?

data Pile a =  Pile [a] deriving  (Show,Eq,Ord)  

flpile:: (Eq a, Eq b, Eq c) => Pile (a,(b,c))-> Pile (a,b,c)
flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))]

asocr :: (a,(b,c)) -> (a,b,c)
asocr (a,(b,c)) = (a,b,c)
Run Code Online (Sandbox Code Playgroud)

implementation haskell haskell-platform

1
推荐指数
2
解决办法
1905
查看次数

java如何为最终属性赋值

我们知道Array对象(数组)有一个length属性,它在Java中声明为:

public final int length;
Run Code Online (Sandbox Code Playgroud)

它被声明为final,因此不需要访问器,除非创建一个新数组,否则我们不能更改length的值.

我的问题是:我很好奇Java是如何实现数组类的,以便它们能够在第一次length声明它时赋值final

实现如何?


注意:我不是问如何更改数组的长度.我问它是如何实现的,以便可以更新最终属性的值.

java arrays implementation

1
推荐指数
1
解决办法
165
查看次数

std :: vector不保留在实现中实例化的推回对象

我有一个向量和在plane.h中声明的对象:

extern Plane Default;
extern std::vector<Plane *>universe;
Run Code Online (Sandbox Code Playgroud)

它们在plane.cpp中定义:

Plane Default("Default");
std::vector<Plane *>universe;
Run Code Online (Sandbox Code Playgroud)

平面构造函数:

Plane::Plane(const std::string &label) {
    /* check universe to ensure uniqueness */
    std::cout << this << std:endl; //DEBUG CHECK to see what I push_back

    universe.push_back(this); //ACTION to keep track of the planes

    std::cout << universe.back() << std::endl; //DEBUG CHECK to ensure that it was stored correctly
}
Run Code Online (Sandbox Code Playgroud)

输出确认平面确实存储在矢量中.

主要:

if(universe.empty()) cout << "EMPTY UNIVERSE" << endl;
Run Code Online (Sandbox Code Playgroud)

表明向量没有保留该值.我期望Default(在plane.cpp中定义)存储在Universe中.

演示

但是,当我从main实例化平面时,Universe会保留这些值

我想这与本地副本,范围和值传递有关,但我无法找到一种方法来实例化实现中的默认平面,以便其地址保留在向量中.

我也尝试从堆中声明向量,如下所示:

extern std::vector<Plane *> *universe;
Run Code Online (Sandbox Code Playgroud)

并定义如下:

std::vector<Plane *> …
Run Code Online (Sandbox Code Playgroud)

c++ implementation scope vector

1
推荐指数
1
解决办法
161
查看次数

为什么空方法附加有意义?

在java 7上午使用PropertyChangeEvent类突然我发现了这个:

/**
 * Returns a string representation of the object.
 *
 * @return a string representation of the object
 *
 * @since 1.7
 */
public String toString() {
    StringBuilder sb = new StringBuilder(getClass().getName());
    sb.append("[propertyName=").append(getPropertyName());
    appendTo(sb);   // <----HERE
    sb.append("; oldValue=").append(getOldValue());
    sb.append("; newValue=").append(getNewValue());
    sb.append("; propagationId=").append(getPropagationId());
    sb.append("; source=").append(getSource());
    return sb.append("]").toString();
}

void appendTo(StringBuilder sb) {
}
Run Code Online (Sandbox Code Playgroud)

是什么让我发疯,为什么要打电话给这个方法appendTo()

特别是那种方法什么都不做?

这有什么意义,我在第一眼看不到?

java methods implementation

1
推荐指数
1
解决办法
68
查看次数