
利用java 反射机制,运行时获取类信息
package comtestdoemo;
import javalangreflectField;
import javalangreflectMethod;
public class MainTest {
/
@param args
/
public static void main(String[] args) throws Exception{
Class demo=ClassforName("comtestdoemoStudent");
Field[] fields=demogetDeclaredFields();
Method[] methods=demogetDeclaredMethods();
for(Field f:fields){
Systemoutprintln("字段:"+fgetName());
}
for(Method method:methods){
String m=methodgetName();
if( mcontains("set")){
Systemoutprintln("方法:"+m+"()");
}
}
}
}
class Student{
private String name;
private int age;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
thisage = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
thisaddress = address;
}
}
很简单哟,但首先明确一点,java并没有提供方法可以直接返回引用名称的,我们只能自己实现,方法如下:
1、类中定义一个私有String类型的 instanceName 字段,并写get方法;
2、在构造方法中使用有参构造为其赋值;
3、new对象时传入引用名称;
3、使用的地方直接调用get方法即可返回改引用名称;
通过循环(for)么,把name_list里面的数据一个个拿出来,循环alist里面的name,然后对比,相同的就放进新的List里面,没有就不放。第一个比完了就第二个,一样的。希望可以帮到你,不懂再问。
for(int i=0,name_listlength,i++)
{
for(int j=0,alist length,j++)
{
if(name_list[i]equals(alist[j]))//判断如果相同就放入新集合
{
listadd();//放入你的新集合
}
else//否则什么也不做
{
}
}
}
可能你的取值跟我不同,因为你的alist 里面有三个对象,你把name对象取出来对比就可以了,我只是给你提供一个思路,取值按照你自己的取就可以了
Bartender脚本可以使用许多不同的方法来获取其他对象的值。其中一种方法是使用“Get”函数,它可以从其他对象中获取值。例如,如果要从一个文本框中获取值,可以使用以下代码:
var value = Get("TextBox1");
另一种方法是使用“Find”函数,它可以搜索整个文档,以查找指定的对象。例如,如果要搜索文档中的所有文本框,可以使用以下代码:
var textBoxes = Find("TextBox");
最后,Bartender脚本还可以使用“GetProperty”函数来获取对象的属性值
many-to-many 多对多 比如一个用户可以有多种角色 一种角色可以对用多个不同的用户
所以角色和用户之间的关系是多对多的关系 一般要用第三张表来出来两者对应的关系
one-to-many 一对多 比如一个老师可以对应很多个学生
many-to-one 相反的是多对一
one-to-one 一对一 比如公民和身份z就是一一对应的
在hibernate中以1对多为例(老师-学生)
配置文件
# Teacherhbmxml
<!-- 有多个学生 Set
key 指定的是学生表中的外键
one-to-many 指定存储到student表的持久化类
inverse="true" 指定关系维护的方向 1:n的关系中(多的一方应该维护关系) 关系的维护问题
-->
# Studenthbmxml
<!--
name属性指定的是加载的1这一端的属性的名称
class属性指定加载哪一个持久化类
column属性指定的是按照哪一个外键加载该持久化类
-->
希望对你有用
可以在类里面加上get和set方法,get方法是给你来获取值的,set方法是给对象赋值的
举例
public class Flower {
private Integer fid;
private String fname;
private double fprice;
public Flower(){
}
public Flower(Integer fid,String fname,double fprice){
thisfid=fid;
thisfname=fname;
thisfprice=fprice;
}
public Integer getFid() {
return fid;
}
public void setFid(Integer fid) {
thisfid = fid;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
thisfname = fname;
}
public double getFprice() {
return fprice;
}
public void setFprice(double fprice) {
thisfprice = fprice;
}
public static void main(String[] args) {
Flower f1=new Flower();//创建一个对象,调用的是无参的构造函数,这时对象是空的,即没值
f1setFid(1001);//通过set方法赋值
f1setFname("水仙");
f1setFprice(100);
Systemoutprintln(f1getFname());//通过get方法取值
Flower f2 = new Flower(1002,"玫瑰",200);//调用有参构造函数,直接赋值
Systemoutprintln(f2getFname());//通过get方法取值
}
}
到了Hibernate30以后,关联关系的对象默认都是使用延迟加载,例如<one-to-many时但我在映射<one-to-one,<many-to-one关系时指定了lazy="true",但是在查询对象时,我只想查询一个对象,仍然会把这个对象所关联的<one-to-one,<many-to-one对象一起查询出来,这样造成了极大的性能浪费在不指定lazy属性时,<many-to-one所关联的对象反而会延迟加载,这让我大为困惑,还以为是Hibernate的bug在网上查找资料,说在为了延迟加载<one-to-one,<many-to-one所关联的对象,需要设置被关联的对象<class name="" lazy="true",我也这样做了,但是仍然没有效果仔细阅读了Hibernate的手册,才发现原来要延迟加载<one-to-one,<many-to-one所关联的对象时,除了要指定lazy="true"外,还需要运行期字节码增强,而我省去了这一步,所以延迟加载没有效果同时还发现在默认情况下,<one-to-one,<many-to-one的lazy属性是"proxy"而不是"true"!因此如果直接采用lazy的默认值,是可以延迟加载的总结一下:<many-to-one默认的属性是lazy="proxy",此时默认是会延迟加载的在指定了lazy="true"之后,必须要经过运行期字节码增加,延迟加载才有效果而<one-to-one相对要复杂一点,延迟加载还要受到constrained属性的限制constrained="false"时表明实体和被关联到的实体的约束不是强制的,即存在一个实体时,它通过<one-to-one关联的实体可能存在,也可能不存在,这时在查询实体时,Hibernate总会发起一次查询检查<one-to-one所关联的实体是否存在,而这时已经可以把one-to-one关联的实体查询出来了,因此在<one-to-one关系中,如果constrained="false",总是会立即加载关联到的实体如果当constrained="true",且lazy="proxy"(默认),是可以延迟加载的如果当constrained="true",且lazy="true"时,需要经过运行期字节码增加,延迟加载才会奏效如果数据量过大, 当然还是有这个必要 也可以做到, 但是返回的不会是对象,而是字段数组hibernate 管这叫投影 Criteria criteria=sessioncreateCriteria(Userclass);ProjectionList proList = ProjectionsprojectionList();//设置投影集合 proListadd(ProjectionsgroupProperty("userName")); proListadd(ProjectionsgroupProperty("password")); criteriasetProjection(proList);最后返回的List是 Object[] , [0] = userName, [1] = password 如果你真的只用来查 userName,password, 那就小题大做了 我想直接取出view(String userName,String password)的形式,两种方法 1 属性的延迟载入在hbmxml的属性上加 lazy=true2 轻量设计单独设计一个类, 只包含 userName 和password再写一个xml啊, 没人规定一张表只能映射一次轻量的employee映射
以上就是关于怎样得到bean中的所有字段全部的内容,包括:怎样得到bean中的所有字段、java 中怎么获得对象引用的名称、android开发 通过字段查找对应的对象!。。。新手求教!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)