首页 > 其他分享 >object is not an instance of declaring class

object is not an instance of declaring class

时间:2024-12-06 16:35:15浏览次数:9  
标签:methods invoke cl declaring object public instance method out

测试反射的时候报错了代码如下

package org.example.provider.domain;
import lombok.Data;
@Data
public class User {
    public int userId;
    public String userName;
}
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
        Class cl = Class.forName("org.example.provider.domain.User");
        Method[] methods = cl.getMethods();
        System.out.println("methods.length:"+methods.length);
        for (Method method : methods) {
            System.out.println("method:"+method.getName());
            if(method.getName().equals("setUserId")){
                Object invoke = method.invoke(cl,1);
            }
        }
        System.out.println(cl);

    }

因为 method.invoke 方法的第一个参数是 实例对象 调用下 newInstance 就可以了

public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
        Class cl = Class.forName("org.example.provider.domain.User");
        Constructor constructor = cl.getDeclaredConstructor();
        Object o = constructor.newInstance();
        Method[] methods = cl.getMethods();for (Method method : methods) {if(method.getName().equals("setUserId")){
                System.out.println("======");
                Object invoke = method.invoke(o,1);
            }
        }
      System.out.println(o);
}

输出结果: User(userId=1, userName=null)

 

标签:methods,invoke,cl,declaring,object,public,instance,method,out
From: https://www.cnblogs.com/zjf6666/p/18591049

相关文章

  • 简洁证明是如何泄露信息的: 选择实例攻击(Chosen-Instance Attack)
    本文翻译自:https://baincapitalcrypto.com/chosen-instance-attack/#conclusion目录ThreatmodelLeakyprimitivesNon-interactiveproofsChosen-instanceattacksinthewildConclusion如果一个证明仅仅是SNARK,但不是zkSNARK会有什么问题?人们通常会产生误解:单个SNARK......
  • 深入解析 `Proxy.newProxyInstance` 方法的三个参数
    深入解析Proxy.newProxyInstance方法的三个参数在Java中,动态代理是通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现的。Proxy.newProxyInstance方法是创建动态代理实例的核心。为了更好地理解这个方法及其参数,我们将逐一探讨每个参数的作用,并结......
  • Java Objects.equals 比较demo
    JavaObjects.equals比较demopackagecom.example.core.mydemo.java3;importjava.util.Objects;/***output:flag=falseflag2=trueflag3=falseflag4=trueflag5=trueflag6=trueflag7=falseflag8=trueflag9=false*/publicclassObjectsTest{......
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-instance.py
    instance.pyultralytics\utils\instance.py目录instance.py1.所需的库和模块2.def_ntuple(n): 3.classBboxes: 4.classInstances: 1.所需的库和模块#UltralyticsYOLO......
  • Jackson ObjectMapper - 指定对象属性的序列化顺序
    注释很有用,但在任何地方应用起来都会很痛苦。您可以配置整个 ObjectMapper 以这种方式工作当前杰克逊版本:objectMapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY,true)较旧的杰克逊版本:objectMapper.configure(SerializationConfig.Feature.SORT_PROPERTIE......
  • RTSP播放器EasyPlayer.js出现aborted(rangeError:webassembly.instance():out of memo
    随着技术的发展,越来越多的H5流媒体播放器开始支持H.265编码格式。例如,EasyPlayer.jsH5播放器能够支持H.264、H.265等多种音视频编码格式,这使得播放器能够适应不同的视频内容和网络环境。那么为什么播放器会出现aborted(rangeError:webassembly.instance():outofmemory)错误呢......
  • cannot open shared object file: No such file or directory
    是Linux编译的依赖库路径不对,需要将依赖库的路径设置为当前路径,然后重新编译,使用的是QtCreator在麒麟系统下编译;#----------------------------------------------------#ThisfileisgeneratedbytheQtVisualStudioAdd-in.#------------------------------------------......
  • PROG2004 Object Oriented Programming
    AssessmentBriefPROG2004ObjectOrientedProgramming(Assessment1)TitleAssessment1TypeProgrammingDeadline4December11:59AMWeighting20%AcademicIntegrityContractcheatingandtheuseofGenAI,suchasChatGPT,inthisassignmentarestrictlyproh......
  • vue基础之4:el与data的两种写法、理解MVVM、Object.defineProperty方法、数据代理
    欢迎来到“雪碧聊技术”CSDN博客!在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目......
  • 举例说明object.freeze有哪些用途呢?
    Object.freeze()在前端开发中有多种用途,主要围绕着防止对象被修改这个核心功能:1.强制不可变数据:这是最常见的用途。当你想确保一个对象在创建后不会被修改时,可以使用Object.freeze()。这对于创建常量、配置对象或任何你不希望被意外更改的数据结构非常有用。constCONFIG......