相关疑难解决方法(0)

我怎样才能将ByteBuffer子类化?

所以Java NIO架构师没有创建一个ByteBuffer接口,而是一个ByteBuffer,它不是最终类,但它没有包 - 公共构造函数,因此它不能在其包之外进行子类化.阿福.:P

我有一个程序使用内存映射的文件字节缓冲区(通过FileChannel.map()获得)在一堆地方,我正在尝试追踪一个讨厌的错误,有问题的文件是打开的,因为有at至少一个ByteBuffer没有发布到垃圾收集.

创造一个InstrumentedByteBuffer看起来像一个字节的缓冲区类,但装饰定期ByteBuffer(或它的子类,例如MappedByteBuffer),并保持它的存在(包括创建新的缓冲区的赛道duplicate()slice()) -这样我可以保持我的代码不变,使用ByteBuffer,我只需要修饰原始的字节缓冲区.

有没有办法做到这一点(通过反射或代理或其他)来绕过私人构造函数?我不需要将它发送到最终产品,我只需要暂时使用它来解决这个bug.

java nio bytebuffer

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

使用反射从抽象基类访问构造函数

我正在玩Java的Reflection.我有一个Base带构造函数的抽象类.

abstract class Base {
    public Base( String foo ) {
        // do some magic
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有一些课程在扩展Base.它们没有太多逻辑.我想用Base构造函数实例化它们,而不必在这些派生类中编写一些代理构造函数.当然,我想用Reflection实例化那些派生类.说:

Class cls = SomeDerivedClass.class;
Constructor constr;
constr = cls.getConstructor( new Class[] { String.class } ); // will return null
Class clsBase = Base.class;
constr = clsBase.getConstructor( new Class[] { String.class } ); // ok
Base obj = (Base) constr.newInstance( new Object[] { "foo" } ); // will throw InstantiationException because it belongs to an abstract class …
Run Code Online (Sandbox Code Playgroud)

java reflection constructor

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

在java中,如何使用私有构造函数创建一个类,其超类也有一个私有构造函数?

举个例子:

public class Foo {
    private Foo() {}
}

public class Bar extends Foo {
    private Bar() {}

    static public doSomething() {
    }
}
Run Code Online (Sandbox Code Playgroud)

那是一个编译错误.一个类至少需要隐式调用它的超类的默认构造函数,在这种情况下,它在Foo中是不可见的.

我可以从Bar调用Object的构造函数吗?

java constructor

5
推荐指数
2
解决办法
5902
查看次数

标签 统计

java ×3

constructor ×2

bytebuffer ×1

nio ×1

reflection ×1