Tag: nullpointerexception

如何更有效地使用@Nullable和@Nonnull注释

我可以看到@Nullable和@Nonnull注释有助于防止NullPointerException但是它们不会传播很远。 这些注释的有效性在一层间接后完全消失,所以如果只添加一些注释,它们就不会传播很远。 由于这些注释没有被很好地执行,所以存在假设用@Nonnull标记的值不为空并且因此不执行空检查的危险。 下面的代码会使用@Nonnull标记的参数为null而不会引发任何投诉。 它在运行时抛出一个NullPointerException异常。 public class Clazz { public static void main(String[] args){ Clazz clazz = new Clazz(); // this line raises a complaint with the IDE (IntelliJ 11) clazz.directPathToA(null); // this line does not clazz.indirectPathToA(null); } public void indirectPathToA(Integer y){ directPathToA(y); } public void directPathToA(@Nonnull Integer x){ x.toString(); // do stuff to x […]

Java将kotlin类内容修改为null

Kotlin在编译时使用分离方式进行了空白检查,以“可空”? 和“notnullable”对象。 它有一个KAnnotator来帮助确定来自Java的对象是否为nullabale。 但是,如果不可空的类的某些部分发生了变化呢? 想想看,我们有一只猫,它肯定有一头可以咀嚼的头。 当我们问猫咪喵喵,它的脑袋嗡嗡作响: package org.cat class CatHead(){ fun mew(){ println("Mew") } } class Cat(){ var head = CatHead() fun mew(){ head.mew() } } fun main(args:Array<String>){ val cat = Cat() cat.mew() } 现在让我们给这张漂亮的照片增加一个JAVA猫疯子(CatManiac.java),他在得到的时候切断了猫头: import org.cat.*; public class CatManiac { public static void cutCatHead(Cat cat){ cat.setHead(null); } } 所以如果我们把一只猫传给一个疯子,他肯定会削减它的头。 而猫咪怎么没有头说呢? fun main(args:Array<String>){ val cat […]

Android – 检查不是空的没有按预期工作

我遇到了一个奇怪的问题,我的检查不是空的不工作。 我试图检查值是否为空,如果是这样弹出警告,说“成分需要一个名字”我不知道为什么,但我似乎无法弄清楚这应该是相当简单的。 我还是Kotlin的新手,所以我怀疑我的Java对Kotlin的思考过程在这里是有缺陷的。 任何帮助和建议将不胜感激! 我有麻烦的部分: // Check that the name is not null (if (values != null) values else throw KotlinNullPointerException()).getAsString(IngredientEntry.COLUMN_INGREDIENT_NAME) ?: throw IllegalArgumentException("Ingredient requires a name") 完整的课堂。 我倾向于评论一切垃圾,所以希望它是有道理的: import android.content.ContentProvider import android.content.ContentUris import android.content.ContentValues import android.content.UriMatcher import android.database.Cursor import android.database.sqlite.SQLiteDatabase import android.net.Uri import android.util.Log import import kotlin.properties.Delegates class DbContentProvider : ContentProvider() { // Database […]

当被Spring代理类访问时,Kotlin实例变量为null

我有一个由Spring代理的服务类,如下所示: @Service @Transactional open class MyService { … } 如果我删除了open修饰符,Spring会抱怨它需要代理这个类来应用@Transactional注解调整。 但是,当在代理服务上调用一个函数时会导致问题,该代理服务试图访问一个变量: @Service @Transactional open class MyService { protected val internalVariable = … fun doWork() { internalVariable.execute() // NullPointerException } } internalVariable作为其声明的一部分进行分配,没有任何注释(如@Autowired等),并且当我删除 @Transactional注释和Spring代理类的要求时工作正常 。 为什么当Spring代理/继承我的服务类时,这个变量为null?

在Grid View和Kotlin的List Veiw之间进行连接

我不知道是否有人可以帮我解决这个错误包“不幸的是,启动已停止”我做了3个活动,我想通过“setOnClickListener”,第一个活动的网格视图,第二个列表视图,第三个细节,注意:我的应用程序名称是启动的 这是一个MainActivity.kt class MainActivity : AppCompatActivity() { var adapter:FoodAdapter?=null var listOfFoods =ArrayList<Food>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // load foods listOfFoods.add(Food("Coffee"," Coffee preparation is",R.drawable.a)) ………. adapter= FoodAdapter(this,listOfFoods) gvListFood.adapter =adapter } class FoodAdapter:BaseAdapter { var listOfFood= ArrayList<Food>() var context:Context?=null constructor(context:Context,listOfFood:ArrayList<Food>):super(){ this.context=context this.listOfFood=listOfFood } override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View? { val […]

为什么HashMap.get不能返回一个可为空的类型?

我有点惊讶,下面的例子抛出一个NullPointerException : fun main(args: Array<String>) { val hm = HashMap<String, Int>() hm.put("alice", 42) val x = hm.get("bob") println(x) // BOOM } 我认为在Kotlin代码中没有NullPointerException ? 如果我使用可选类型对x进行注释,那么程序将打印出null : fun main(args: Array<String>) { val hm = HashMap<String, Int>() hm.put("alice", 42) val x: Int? = hm.get("bob") println(x) // null } 我发现了一个特例,还是Kotlin / Java interop的一个普遍问题? 我正在使用IntelliJ IDEA 14.1 Community Edition和Kotlin 0.11.91.1插件。

从kotlin的乐趣中返回null

我写了一个函数来执行数据库查询。 如果它不能获取任何结果,我希望它返回null 。 fun getServiceCharge(model: String): ServiceChargeMasterList { val unique = VideoconApplication.daoSession.serviceChargeMasterListDao.queryBuilder().where(ServiceChargeMasterListDao.Properties.ModelCategory.eq(model)).unique() if (unique != null) return unique else return null!! } 它给了我kotlin.KotlinNullPointerException 。 谁能告诉我如何解决这个问题?

空指针在使用Kotlin的片段中引用RecyclerView时出错

当我遇到问题时,我正在尝试使用kotlin及其在android中的新功能。 在kotlin中有这样一个很酷的东西,你可以不使用findViewById()直接使用xml中的id。 但是,当我将其应用于回收视图并尝试使其工作时,我得到一个空指针异常。 我检查了XML,我有一个与我使用的ID回收视图。 你们能帮我弄清楚为什么我在这里得到一个空指针异常? 这里是我参考我的回收视图和应用方法的代码。 with(rv_my_device){ setHasFixedSize(true) layoutManager = LinearLayoutManager(activity) listAdapter = MyDeviceAdapter(activity,titles,values) adapter = listAdapter } 我得到的错误是 FATAL EXCEPTION: main Process: com.example.sriram.mydevice, PID: 24771 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sriram.mydevice/com.example.sriram.mydevice.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724 at android.app.ActivityThread.-wrap12(ActivityThread.java at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) at android.os.Handler.dispatchMessage(Handler.java:102) […]

Kotlin – 可空字段的非空吸气

我是Kotlin的新手,我尝试将一个小型的Java项目改为这种新的语言。 我在我的项目中使用mongodb,我有一个类,例如: class PlayerEntity { constructor() {} //for mongodb to create an instance constructor(id: ObjectId, name: String) { //used in code this.id = id this.name = name } @org.mongodb.morphia.annotations.Id var id: ObjectId? = null var name: String? = null } 我必须将id字段标记为空( var id: ObjectId? ),因为空的构造函数。 当我尝试从另一个类访问这个字段时,我必须使用非null检查: thePlayer.id!! 。 但是我的应用程序的逻辑是id字段永远不为null(mongo创建Player实例并立即设置id字段)。 而且我不想在任何地方进行非空的检查。 我试图做一个非null的getter,但它不能编译: var id: ObjectId? = […]