技术标签: Java代理类 【Java系列】 java.lang.ClassCastException
Java中自带的动态代理InvocationHandler接口、Proxy类只能针对接口进行动态代理,如果要对类进行代理可以使用第三方的类库像CGLIG等相关对字节码操作实现的类库;
下面我们可以看一下使用Java动态代理代理类会发生什么异常:
package com.test.Application;
public class ProxyPeople {
public String work(String name) {
System.out.println("工作名称是==》"+name);
return name;
}
}
package com.test.Application;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ProxyHandler implements InvocationHandler{
private Object obj;
public ProxyHandler(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(obj, args);
}
}
package com.test.Application;
import java.lang.reflect.Proxy;
public class Test1 {
public static void main(String[] args) {
ProxyPeople people = new ProxyPeople();
ProxyHandler handler = new ProxyHandler(people);
ProxyPeople proxy = (ProxyPeople)Proxy.newProxyInstance(handler.getClass().getClassLoader(), people.getClass().getInterfaces(), handler);
Object obj = proxy.work("财务");
System.out.println(obj);
}
}
Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to com.test.Application.ProxyPeople
at com.test.Application.Test1.main(Test1.java:11)
这个示例也说明了Java代理不可以对类进行代理,只能针对接口代理。
1. MFC新建一个工程1.1 创建一个新项目1.2 选择MFC应用1.3 定义项目名称,项目文件存放路径1.4 完成创建2. 初始工程文件的结构2.1 解决方案资源管理器2.2 类视图2.3 各类之间的继承关系2.4 OnDraw函数3. 自定义坐标系的设置3.1 原因3.2 映射模式的宏定义表3.3 实现4. 画笔画刷的使用4.1 CDC类 , 绘图工具类4.2 绘制像素点4.3 绘图标准步骤4.4 画笔的使用(直线段为例)本篇学习自:孔令德老师的《三维计算机图形学》
本期为大家开源一款英飞凌TC264核心板,领取后可以直接在某创或某配免费打板,焊接使用。
包括关联查询内链接、外链接、自查询;子查询在SELECT、WHERE、FROM语句中使用,子查询的执行过程及注意事项;关联子查询EXISTS、NOT EXISTS的执行过程,IN和EXISTS的区别;分页查询。
所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项,还有更多福利赠送作者 |Caleb Kaiser译者 |弯月,编辑| 郭芮来源 | CSDN(ID:CSDNnews)如今...
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁,鸡母,雏鸡各几何?输出所有可能的情况,若公鸡,母鸡,小鸡的数量分别为x,y,z,则每种情况的输出结果代码输出:public class lianyi {public static void main(String[] args) {// 鸡公for (int x = 0; x <= 20; x++) {// 鸡母for (int y = 0; y <= 33; y++) {// 小鸡int z = 100 - x
springboot1.5.9整合elasticsearch2.3.5附带demo注意点操作注意点注意springboot-data-elasticsearch和elasticsearch版本号的对应,这个是严格要求。操作1.下载elasticsearch2.3.5.zip修改C:\ruanjian\elasticsearch2.3.5\config下面的配置文件。cluster.n...
原文链接:https://blog.csdn.net/qq_40969467/article/details/90758281 点击查看更多通信与专业知识 【1】线型、标记符、颜色的说明 【2】对于坐标轴的注释内容xlabel,ylabel的属性说明 figure,plot(Seg1,SS1_QJ1,'k');hold on plot(Seg1,SS1_QJ1,'ks') plot(Seg1,Q1*ones(length(Seg1)
支付宝开放平台之第三方授权登录与获取用户信息注意:支付宝公众号的主体是一个 pid 我们通过 pid和密码登录支付宝开放平台,创建一个应用,对应一个appid,在应用中设置回调域名,加密方式,RSA公私钥... ...,等审核通过应用上线以后就可以使用,程序中需要的是:appid、自己生成的RSA私钥(公钥上传到支付宝)、支付宝的公钥1.登录支付宝开放平台https://open.a...
etree.HTML():构造了一个XPath解析对象并对HTML文本进行自动修正。etree.HTML模块可以自动修正HTML文本etree.tostring():输出修正后的结果,类型是bytestostring()方法即可输出修正后的HTML代码,但是结果是bytes类型。这里利用decode()方法将其转成str类型代码如下content = html.xpath(...
一、下载MysqlMysql下载地址:https://dev.mysql.com/downloads/mysql/二、卸载Linux自带的mariadb 安装Mysql之前需要卸载mariadb的安装包rpm -qa | grep mariadb 查看是否存在rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps 卸...
CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:SELECT CO