Tag: 字段

JNI – 如何使用具有不同字段的多个Jni包装器实例?

背景 我有一个使用JNI(使用NDK)在Java和C / C ++中编码的android项目。 我已经在java端创建了一个Jni java包装器,它将自己完成所有Jni操作,而没有其他java类可以直接访问除此包装器之外的jni操作。 问题 问题是,我希望创建这个包装器的多个实例,而Jni部分应该有一个每个Jni包装器的实例。 这是一个问题,因为Jni部分为所有实例保存相同的字段。 这个问题 我怎样才能解决这个问题,这样对于jni包装器的每个java实例,jni部分都会有一个实例? 我在想,也许我可以将所有字段放入C ++类,并且有一个init()函数,它将为JniWrapper的CTOR返回它的新实例,从那时起,对于需要字段的每个JNI函数,它会将此类作为参数。 也许它可能是这个链接上显示的指针。 可悲的是,我不知道该怎么做。 有人可以帮忙吗? 样品 这是一个示例代码,我希望这些代码能让那些不了解问题的人更清楚: java部分: public class JniWrapper { static { System.loadLibrary(“JniTest”); } private native void foo(Bitmap bitmap); } jni部分: … // sadly, all of those fields are actually a global fields int _intField; float _floatField; //those are just sample […]

Java通用字段声明

在没有generics类型的类中,我想声明一个类似于这些的相当复杂的generics字段: public class Client { private Map<Class, List<Consumer>> classToConsumerTry1; private Map<Class, List<Consumer>> classToConsumerTry2; } promblem是java编译器不会让我:) 所以我的问题是如何在不向类Client添加类型的情况下正确引入T和S. 我的目标是强制Class是Serializable的子类型,而Consumer是您为Class选择的Class的子类型。

在Java中,让对象的成员公开可用是不是一个坏主意?

我的应用程序中有一个数据类。 我的应用程序永远不会被用作公共API,我将是唯一一个在我的项目中开发代码的人。 我试图保存每一盎司的处理器和内存电源。 在我的数据类中使我的数据成员具有公共/受保护/默认保护是不是一个坏主意,这样我就不必使用getter了? 使用getter需要更多的内存和堆栈的创建……我相信这是不必要的。 我在使用getter时可以看到的唯一原因是保护/隐私,但如果我是唯一的编码器而没有其他人会使用我的API,那么不使用getter是一个坏主意吗? 如果这是愚蠢的,请告诉我。

如何解决Java中缺少抽象字段的问题?

假设,我们有一个抽象类A ,我们想强制所有子类都有一个特定的字段。 这在Java中是不可能的,因为我们无法定义抽象字段。 解决方法1:强制子类实现提供所需值的方法。 abstract class A { abstract int getA(); } 缺点 :每个子类都必须为我们想要的每个抽象字段实现一个方法。 这可以导致许多方法实现。 优点 :我们可以在抽象类中使用方法getA ,并在A使用它实现方法,而不在每个子类中实现它们。 但是方法背后的价值不能被抽象类覆盖。 解决方法2:通过强制子类为抽象类提供值来模拟抽象字段。 abstract class A { int a; public A(int a) { this.a = a; } } 缺点 :当我们有多个字段(> 10)时,超级构造函数调用看起来有点难看和混乱。 优点 :我们可以在抽象类中使用字段a ,并在A使用它实现方法,而不在每个子类中实现它们。 另外,值a可以被抽象类覆盖。 问题:实现目标的常用方法是哪种解决方法? 也许比上面的更好?

。this.getClass()getFields()的长度。; 总是返回0

我试图获取特定类中的字段数。 但是,我使用的技术不起作用,并始终返回0: this.getClass().getFields().length; 如何获取特定class级的字段数?

在不可变类中,为什么字段被标记为私有?

在创建不可变类时使字段为私有有什么好处? 我已经看到为什么在创建不可变类时,字段被声明为私有? 但我从这篇文章中得不到任何理解。 有人可以解释一下吗?

Java:在字段OR构造函数中初始化ArrayList?

将项添加到ArrayList时,如果ArrayList未初始化为字段,则会收到NullPointerException。 有人可以解释为什么吗 将ArrayList初始化为字段时的工作原理: public class GroceryBill { private String clerkName; private ArrayList itemsInGroceryList = new ArrayList(); private double total; //Constructs a grocery bill object for the given clerk public GroceryBill(Employee Clerk) { this.clerkName = Clerk.getEmployeeName(); this.total = 0.0; } public void add(Item i) { itemsInGroceryList.add(i); } } 当我将ArrayList声明为字段然后在类构造函数中初始化它时,不工作: public class GroceryBill { private String clerkName; […]

Java:向现有Class添加字段和方法?

在Java中,是否有一种向现有类添加一些字段和方法的方法? 我想要的是我有一个类导入到我的代码中,我需要添加一些从现有字段派生的字段及其返回方法。 有没有办法做到这一点?

为什么我们可以降低扩展类中属性的可见性?

我有两个class, Parent : public class Parent { public String a = “asd”; public void method() { } } 和Child : public class Child extends Parent{ private String a = “12”; private void method() { } } 在Child ,我尝试覆盖父method ,该method给出编译时错误, cannot reduce visibility of a method这很好。 但是,为什么这个错误不适用于财产a ? 我也降低了a可见性,但它没有给出错误。

Java中有“this”这个名字吗?

Eclipse会给出一个错误,“赋值的左侧必须是一个变量”,当我尝试类似的东西时: public class Thing{ String a1; int a2; public void meth(){ Thing A = new Thing(); this = A; } } 我必须分配每个变量( this.a1 = A.a1; this.a2 = A.a2; )作为解决方法。 是否有其他方法可以在不通过每个变量字段的情况下执行此操作 如果this不是一个变量,它叫什么?