信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2016|回复: 3
打印 上一主题 下一主题

[『 Java 图文教程』] 详解reflect Java的反射机制多方法实例教程

  [复制链接]

44

主题

106

帖子

918

积分

积分
918
跳转到指定楼层
宣传软件楼主
发表于 2016-9-24 08:39:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:Java 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件初级教程 

软件教程发布日期:2016-09-24

软件教程关键字:Java的反射机制

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述

一、java的反射机制浅谈


最近研究java研究得很给力,主要以看博文为学习方式。以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出。受到各位指教之处,如若让小生好好感动,说不定会请各位吃饭哦!


1.何谓反射机制


根据网文,java中的反射机制可以如此定义:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。


2.反射机制如何实现


谈到反射机制,最诱人的莫过于“动态”二字了。接触过C语言的童鞋们都知道,C语言中也有个和“动态”搭上边的函数:malloc()函数。其实这里的两个动态是一个意思,都指的是非编译时处理,抑或运行时处理。这种机制,可以让程序的弹性增加不少,因为借由此机制,客户可以在程序运行时改变一些他关心的性质:分配内存(当然他可能 完全不知道这么做了),调用某个类(当然他还是被蒙在鼓里)等。

下面我们就聊聊java中动态机制是如何实现的。


上一篇文章中提到了java的类的加载问题,但没有更深入地解释其运行机制,在这里就先谈谈这个问题。


首先不得不提到的是java.lang.Class这个类。

有这么一段话:

Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。


也就是说,ClassLoader找到了需要调用的类时(java为了调控内存的调用消耗,类的加载都在需要时再进行,很抠但是很有效),就会加载它,然后根据.class文件内记载的类信息来产生一个与该类相联系的独一无二的Class对象。该Class对象记载了该类的字段,方法等等信息。以后jvm要产生该类的实例,就是根据内存中存在的该Class类所记载的信息(Class对象应该和我所了解的其他类一样会在堆内存内产生、消亡)来进行。


而java中的Class类对象是可以人工自然性的(也就是说开放的)得到的(虽然你无法像其他类一样运用构造器来得到它的实例,因为

Class对象都是jvm产生的。不过话说回来,客户产生的话也是无意义的),而且,更伟大的是,基于这个基础,java实现了反射机制。


获取Class对象有三种方式:


1.通过Object类的getClass()方法。例如:

Class c1 = new String("").getClass();

2.通过Class类的静态方法——forName()来实现:

Class c2 = Class.forName("MyObject");

3.如果T是一个已定义的类型的话,在java中,它的.class文件名:T.class就代表了与其匹配的Class对象,例如:

Class c3 = Manager.class;

Class c4 = int.class;

Class c5 = Double[].class;


这里需要解释一下3:请记住一句话,java中,一切皆对象。也就是说,基本类型int float 等也会在jvm的内存池像其他类型一样中生成

一个Class对象。而数组等组合型数据类型也是会生成一个Class对象的,而且更令人惊讶的是,java中数组的本来面目其实就是某个类,惊讶

中的惊讶是,含有相同元素的相同维数的数组还会共同享用同一个Class对象!其实根据我的臆想,数组的length性质应该就保存在这个Class

对象里面。


Class类中存在以下几个重要的方法:


1.getName()

一个Class对象描述了一个特定类的特定属性,而这个方法就是返回String形式的该类的简要描述。由于历史原因,对数组的Class对象

调用该方法会产生奇怪的结果。


2.newInstance()

该方法可以根据某个Class对象产生其对应类的实例。需要强调的是,它调用的是此类的默认构造方法。例如:

MyObject x = new MyObject();

MyObject y = x.getClass().newInstance();


3.getClassLoader()

返回该Class对象对应的类的类加载器。


4.getComponentType()

该方法针对数组对象的Class对象,可以得到该数组的组成元素所对应对象的Class对象。例如:

int[] ints = new int[]{1,2,3};

Class class1 = ints.getClass();

Class class2 = class1.getComponentType();

而这里得到的class2对象所对应的就应该是int这个基本类型的Class对象。


5.getSuperClass()

返回某子类所对应的直接父类所对应的Class对象。


6.isArray()

判定此Class对象所对应的是否是一个数组对象。


好啦,现在对Class这个类应该有了一个大致的了解,下面就给出一个反射机制的典型例子供各位分析:

[java] view plain copy
print?


  • import java.lang.reflect.Array;     
  • import java.lang.reflect.Constructor;     
  • import java.lang.reflect.Field;     
  • import java.lang.reflect.Method;     
  •    
  •    
  • /**   
  • * Java Reflection Cookbook   
  • *   
  • * @author Michael Lee   
  • * @since 2006-8-23   
  • * @version 0.1a   
  • */   
  •    
  • public class Reflection {     
  •     /**   
  •      * 得到某个对象的公共属性   
  •      *   
  •      * @param owner, fieldName   
  •      * @return 该属性对象   
  •      * @throws Exception   
  •      *   
  •      */   
  •     public Object getProperty(Object owner, String fieldName) throws Exception {     
  •         Class ownerClass = owner.getClass();     
  •    
  •         Field field = ownerClass.getField(fieldName);     
  •    
  •         Object property = field.get(owner);     
  •    
  •         return property;     
  •     }     
  •    
  •     /**   
  •      * 得到某类的静态公共属性   
  •      *   
  •      * @param className   类名   
  •      * @param fieldName   属性名   
  •      * @return 该属性对象   
  •      * @throws Exception   
  •      */   
  •     public Object getStaticProperty(String className, String fieldName)     
  •             throws Exception {     
  •         Class ownerClass = Class.forName(className);     
  •    
  •         Field field = ownerClass.getField(fieldName);     
  •    
  •         Object property = field.get(ownerClass);     
  •    
  •         return property;     
  •     }     
  •    
  •    
  •     /**   
  •      * 执行某对象方法   
  •      *   
  •      * @param owner   
  •      *            对象   
  •      * @param methodName   
  •      *            方法名   
  •      * @param args   
  •      *            参数   
  •      * @return 方法返回值   
  •      * @throws Exception   
  •      */   
  •     public Object invokeMethod(Object owner, String methodName, Object[] args)     
  •             throws Exception {     
  •    
  •         Class ownerClass = owner.getClass();     
  •    
  •         Class[] argsClass = new Class[args.length];     
  •    
  •         for (int i = 0, j = args.length; i < j; i++) {     
  •             argsClass = args.getClass();     
  •         }     
  •    
  •         Method method = ownerClass.getMethod(methodName, argsClass);     
  •    
  •         return method.invoke(owner, args);     
  •     }     
  •    
  •    
  •       /**   
  •      * 执行某类的静态方法   
  •      *   
  •      * @param className   
  •      *            类名   
  •      * @param methodName   
  •      *            方法名   
  •      * @param args   
  •      *            参数数组   
  •      * @return 执行方法返回的结果   
  •      * @throws Exception   
  •      */   
  •     public Object invokeStaticMethod(String className, String methodName,     
  •             Object[] args) throws Exception {     
  •         Class ownerClass = Class.forName(className);     
  •    
  •         Class[] argsClass = new Class[args.length];     
  •    
  •         for (int i = 0, j = args.length; i < j; i++) {     
  •             argsClass = args.getClass();     
  •         }     
  •    
  •         Method method = ownerClass.getMethod(methodName, argsClass);     
  •    
  •         return method.invoke(null, args);     
  •     }     
  •    
  •    
  •    
  •     /**   
  •      * 新建实例   
  •      *   
  •      * @param className   
  •      *            类名   
  •      * @param args   
  •      *            构造函数的参数   
  •      * @return 新建的实例   
  •      * @throws Exception   
  •      */   
  •     public Object newInstance(String className, Object[] args) throws Exception {     
  •         Class newoneClass = Class.forName(className);     
  •    
  •         Class[] argsClass = new Class[args.length];     
  •    
  •         for (int i = 0, j = args.length; i < j; i++) {     
  •             argsClass = args.getClass();     
  •         }     
  •    
  •         Constructor cons = newoneClass.getConstructor(argsClass);     
  •    
  •         return cons.newInstance(args);     
  •    
  •     }     
  •    
  •    
  •          
  •     /**   
  •      * 是不是某个类的实例   
  •      * @param obj 实例   
  •      * @param cls 类   
  •      * @return 如果 obj 是此类的实例,则返回 true   
  •      */   
  •     public boolean isInstance(Object obj, Class cls) {     
  •         return cls.isInstance(obj);     
  •     }     
  •          
  •     /**   
  •      * 得到数组中的某个元素   
  •      * @param array 数组   
  •      * @param index 索引   
  •      * @return 返回指定数组对象中索引组件的值   
  •      */   
  •     public Object getByArray(Object array, int index) {     
  •         return Array.get(array,index);     
  •     }     
  • }   


例子的解释就免了,因为读代码加上自己理解是最好的程序员学习方式。另外,此代码来源为互联网。


好啦,就到这里了。当你知道了java的反射机制后,以后当你接触到java的动态代理时就不会像我一样茫然了。好啦,谢谢围观!



untoJAVA技术:XML配置文件的读取处理多方法实例教程nextJava类别载入器和实例多教程用法
回复

使用道具 举报

44

主题

106

帖子

918

积分

积分
918
信息发布软件沙发
 楼主| 发表于 2016-9-24 08:40:06 | 只看该作者
多方法实例教程2

一、类型识别的两种方式:

    首先了解一下“运行时类型识别”(Run-time Type Identification, RTTI)主要有两种方式,

    第一种:是我们在一次编译时和运行时已经知道了所有的类型。

    第二种:是我们在整项目分模块的编译,在运行时可以对新加入的模块进行动态的编译。(在动态编译模块之前还不知道被编译code的类型。) 这就是下面要接受的,功能强大的“反射”机制。

    二、认识“Class对象”:

    要理解RTTI(运行时类型识别)在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的,这项工作是由“Class对象”完成的,它包含了与类有关的信息。

    类是程序的重要组成部分(类的属性,方法以及它的一些特性,在这里我就不做赘述了。),每个类都有一个Class对象,每当编写并编译了一个新类就会产生一个Class对象,它被保存在一个与你所创建的新类同名的.class文件中。那么在程序运行时,当我们想生成这个类的对象时(实例化这个类),运行这个程序的Java虚拟机(JVM)就会这样做:

    首先会从加载所创新类的.class文件,

    然后确认这个新类的Class对象是否已经加载,如果尚未加载,JVM就会根据类名查找.class文件,并将其载入,一旦这个类的Class对象被载入内存,它就被用来创建这个类的所有对象。

    一般的RTTI形式包括三种:

    1.传统的类型转换。如“(Apple)Fruit”,由RTTI确保类型转换的正确性,如果执行了一个错误的类型转换,就会抛出一个ClassCastException异常。

    2.通过Class对象来获取对象的类型。如

    [code="java"] Class c = Class.forName(“Apple”);

    Object o = c.newInstance();

    3.通过关键字instanceof或Class.isInstance()方法来确定对象是否属于某个特定类型的实例,准确的说,应该是instanceof / Class.isInstance()可以用来确定对象是否属于某个特定类及其所有基类的实例,这和equals() / ==不一样,它们用来比较两个对象是否属于同一个类的实例,没有考虑继承关系。[enxtpage]

    三、反射

    如果不知道某个对象的类型,可以通过RTTI来获取,但前提是这个类型在编译时必须已知,这样才能使用RTTI来识别。即在编译时,编译器必须知道所有通过RTTI来处理的类。

    使用反射机制可以不受这个限制,它主要应用于两种情况:

    第一种情况,是“基于构件的编程”这种编程方式中,将使用某种基于快速应用开发(RAD)的应用构建工具来构建项目。这是现在最常见的可视化编程方法,通过代表不同组件的图标拖动到图板上,然后设置”构件“(组件)的属性值来配置它们来创建程序。要做到这种配置编程,就必须要求构件都是可实例化的,并且要暴露其部分信息,使得程序员可以读取和设置构件的值和状态。当处理GUI时间的构件时还必须暴露相关方法的事件处理细节,以便RAD环境帮助程序员覆盖这些处理事件的方法。在这里,就要用到反射的机制来检查可用的方法并返回方法实体对象。Java通过JavaBeans提供了基于构件的编程架构。

    第二种情况,在运行时获取类的信息的另外一个动机,就是希望能够提供在跨网络的远程平台上创建和运行对象的能力。这被成为远程调用(RMI),它允许一个Java程序将对象分步在多台机器上,这种分步能力将帮助开发人员执行一些需要进行大量计算的任务,充分利用计算机资源,提高运行速度。

    Class类支持反射,是在java.lang.reflect中包含了Field/Method/Constructor类,每个类都实现了Member接口。这些类型的对象都是由JVM在运行时创建的,用来表示未知类里对应的成员。如可以用Constructor类创建新的对象,用get()和set()方法读取和修改与Field对象关联的字段,用invoke()方法调用与Method对象关联的方法。同时,还可以调用getFields()、getMethods()、getConstructors()等方法来返回表示字段、方法以及构造器的对象数组。这样,未知的对象的类信息在运行时就能被完全确定下来,而在编译时不需要知道任何信息。

    另外,RTTI有时能解决效率问题。当程序中使用多态给程序的运行带来负担的时候,可以使用RTTI编写一段代码来提高效率。



回复 支持 反对

使用道具 举报

44

主题

106

帖子

918

积分

积分
918
推广工具板凳
 楼主| 发表于 2016-9-24 08:41:22 | 只看该作者
多方法实例教程3

反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧!

           一,先看一下反射的概念:
              主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
             反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
             看概念很晕的,继续往下看。
      二,反射机制的作用:
              1,反编译:.class-->.java
              2,通过反射机制访问java对象的属性,方法,构造方法等;
             这样好像更容易理解一些,下边我们具体看怎么实现这些功能。

      三,在这里先看一下sun为我们提供了那些反射机制中的类:
java.lang.Class;               
java.lang.reflect.Constructor; java.lang.reflect.Field;        
java.lang.reflect.Method;
java.lang.reflect.Modifier;

            很多反射中的方法,属性等操作我们可以从这四个类中查询。还是哪句话要学着不断的查询API,那才是我们最好的老师。

         四,具体功能实现:
                1,反射机制获取类有三种方法,我们来获取Employee类型

[java] view plain copy
print?

//第一种方式:  
Classc1 = Class.forName("Employee");  
//第二种方式:  
//java中每个类型都有class 属性.  
Classc2 = Employee.class;  

//第三种方式:  
//java语言中任何一个java对象都有getClass 方法  
Employeee = new Employee();  
Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)  




    2,创建对象:获取类以后我们来创建它的对象,利用newInstance:

[java] view plain copy
print?

Class c =Class.forName("Employee");  

//创建此Class 对象所表示的类的一个新实例  
Objecto = c.newInstance(); //调用了Employee的无参数构造方法.  




    3,获取属性:分为所有的属性和指定的属性:
      a,先看获取所有的属性的写法:
[java] view plain copy
print?

//获取整个类  
            Class c = Class.forName("java.lang.Integer");  
              //获取所有的属性?  
            Field[] fs = c.getDeclaredFields();  

                   //定义可变长的字符串,用来存储属性  
            StringBuffer sb = new StringBuffer();  
            //通过追加的方法,将每个属性拼接到此字符串中  
            //最外边的public定义  
            sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n");  
            //里边的每一个属性  
            for(Field field:fs){  
                sb.append("\t");//空格  
                sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例如public,static等等  
                sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字  
                sb.append(field.getName()+";\n");//属性的名字+回车  
            }  

            sb.append("}");  

            System.out.println(sb);  


       b,获取特定的属性,对比着传统的方法来学习:


[java] view plain copy
print?

public static void main(String[] args) throws Exception{  

<span style="white-space:pre">  </span>//以前的方式:  
    /*
    User u = new User();
    u.age = 12; //set
    System.out.println(u.age); //get
    */  

    //获取类  
    Class c = Class.forName("User");  
    //获取id属性  
    Field idF = c.getDeclaredField("id");  
    //实例化这个类赋给o  
    Object o = c.newInstance();  
    //打破封装  
    idF.setAccessible(true); //使用反射机制可以打破封装性,导致了java对象的属性不安全。  
    //给o对象的id属性赋值"110"  
    idF.set(o, "110"); //set  
    //get  
    System.out.println(idF.get(o));  
}  



4,获取方法,和构造方法,不再详细描述,只来看一下关键字:
方法关键字
含义
getDeclaredMethods()
获取所有的方法
getReturnType()
获得方法的放回类型
getParameterTypes()
获得方法的传入参数类型
getDeclaredMethod("方法名",参数类型.class,……)
获得特定的方法


构造方法关键字
含义
getDeclaredConstructors()
获取所有的构造方法
getDeclaredConstructor(参数类型.class,……)
获取特定的构造方法


父类和父接口
含义
getSuperclass()
获取某类的父类
getInterfaces()
获取某类实现的接口

         这样我们就可以获得类的各种内容,进行了反编译。对于JAVA这种先编译再运行的语言来说,反射机制可以使代码更加灵活,更加容易实现面向对象。

  五,反射加配置文件,使我们的程序更加灵活:
             在设计模式学习当中,学习抽象工厂的时候就用到了反射来更加方便的读取数据库链接字符串等,当时不是太理解,就照着抄了。看一下.NET中的反射+配置文件的使用:
             当时用的配置文件是app.config文件,内容是XML格式的,里边填写链接数据库的内容:
[html] view plain copy
print?

      <configuration>  
lt;appSettings>  
<add     key=""  value=""/>  
lt;/appSettings>  
        </configuration>  



反射的写法:   
[csharp] view plain copy
print?

assembly.load("当前程序集的名称").CreateInstance("当前命名空间名称".要实例化的类名);  




          这样的好处是很容易的方便我们变换数据库,例如我们将系统的数据库从SQL Server升级到Oracle,那么我们写两份D层,在配置文件的内容改一下,或者加条件选择一下即可,带来了很大的方便。

         当然了,JAVA中其实也是一样,只不过这里的配置文件为.properties,称作属性文件。通过反射读取里边的内容。这样代码是固定的,但是配置文件的内容我们可以改,这样使我们的代码灵活了很多!

    综上为,JAVA反射的再次学习,灵活的运用它,能够使我们的代码更加灵活,但是它也有它的缺点,就是运用它会使我们的软件的性能降低,复杂度增加,所以还要我们慎重的使用它。


回复 支持 反对

使用道具 举报

44

主题

106

帖子

918

积分

积分
918
软件定制开发地板
 楼主| 发表于 2016-9-24 08:43:51 | 只看该作者
本帖最后由 宣传软件 于 2016-9-24 08:45 编辑

实例教程4

本文以实例形式详细讲述了Java的反射机制,是Java程序设计中重要的技巧。分享给大家供大家参考。具体分析如下:

首先,Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。 Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。

JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。
1. 一个简单的例子

考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。

import java.lang.reflect.*; public class DumpMethods {   public static void main(String args[]) {    try {       Class c = Class.forName("java.util.Stack");       Method m[] = c.getDeclaredMethods();             for (int i = 0; i < m.length; i++)         System.out.println(m.toString());    }    catch (Throwable e){       System.err.println(e);    }   } }
它的结果输出为:
public synchronized java.lang.Object java.util.Stack.pop()public java.lang.Object java.util.Stack.push(java.lang.Object)public boolean java.util.Stack.empty()public synchronized java.lang.Object java.util.Stack.peek()public synchronized int java.util.Stack.search(java.lang.Object)
这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。
这个程序使用 Class.forName 载入指定的类,然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。

2.开始使用 Reflection

用于 reflection 的类,如 Method,可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤:第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中,用 java.lang.Class 类来描述类和接口等。

下面就是获得一个 Class 对象的方法之一:

Class c = Class.forName("java.lang.String");
这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句:

Class c = int.class; 或者 Class c = Integer.TYPE;
它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。
第二步是调用诸如 getDeclaredMethods 的方法,以取得该类中定义的所有方法的列表。

一旦取得这个信息,就可以进行第三步了——使用 reflection API 来操作这些信息,如下面这段代码:
Class c = Class.forName("java.lang.String"); Method m[] = c.getDeclaredMethods(); System.out.println(m[0].toString());
它将以文本方式打印出 String 中定义的第一个方法的原型。

在下面的例子中,这三个步骤将为使用 reflection 处理特殊应用程序提供例证。

模拟 instanceof 操作符
得到类信息之后,通常下一个步骤就是解决关于 Class 对象的一些基本的问题。例如,Class.isInstance 方法可以用于模拟 instanceof 操作符:
class S { } public class IsInstance {   public static void main(String args[]) {    try {       Class cls = Class.forName("S");       boolean b1 = cls.isInstance(new Integer(37));       System.out.println(b1);       boolean b2 = cls.isInstance(new S());       System.out.println(b2);    }    catch (Throwable e) {       System.err.println(e);    }   } }
在这个例子中创建了一个S 类的 Class 对象,然后检查一些对象是否是S的实例。Integer(37) 不是,但 new S()是。

3.找出类的方法

找出一个类中定义了些什么方法,这是一个非常有价值也非常基础的 reflection 用法。下面的代码就实现了这一用法:

import java.lang.reflect.*; public class Method1 {   private int f1(Object p, int x) throws NullPointerException {   if (p == null)    throw new NullPointerException();   return x; }   public static void main(String args[]) {     try {       Class cls = Class.forName("Method1");       Method methlist[] = cls.getDeclaredMethods();       for (int i = 0; i < methlist.length; i++) {         Method m = methlist;         System.out.println("name = " + m.getName());         System.out.println("decl class = " + m.getDeclaringClass());         Class pvec[] = m.getParameterTypes();         for (int j = 0; j < pvec.length; j++)           System.out.println("param #" + j + " " + pvec[j]);         Class evec[] = m.getExceptionTypes();         for (int j = 0; j < evec.length; j++)           System.out.println("exc #" + j + " " + evec[j]);         System.out.println("return type = " + m.getReturnType());         System.out.println("-----");       }     }     catch (Throwable e) {       System.err.println(e);     }   } }

这个程序首先取得 method1 类的描述,然后调用 getDeclaredMethods 来获取一系列的 Method 对象,它们分别描述了定义在类中的每一个方法,包括 public 方法、protected 方法、package 方法和 private 方法等。如果你在程序中使用 getMethods 来代替 getDeclaredMethods,你还能获得继承来的各个方法的信息。

取得了 Method 对象列表之后,要显示这些方法的参数类型、异常类型和返回值类型等就不难了。这些类型是基本类型还是类类型,都可以由描述类的对象按顺序给出。

输出的结果如下:
name = f1 decl class = class method1 param #0 class java.lang.Object param #1 int exc #0 class java.lang.NullPointerException return type = int-----name = main decl class = class method1 param #0 class [Ljava.lang.String; return type = void
4.获取构造器信息
获取类构造器的用法与上述获取方法的用法类似,如:

import java.lang.reflect.*;public class Constructor1 {   public Constructor1() {   }   protected Constructor1(int i, double d) {   }   public static void main(String args[]) {    try {       Class cls = Class.forName("Constructor1");       Constructor ctorlist[] = cls.getDeclaredConstructors();       for (int i = 0; i < ctorlist.length; i++) {        Constructor ct = ctorlist;        System.out.println("name = " + ct.getName());        System.out.println("decl class = " + ct.getDeclaringClass());        Class pvec[] = ct.getParameterTypes();        for (int j = 0; j < pvec.length; j++)          System.out.println("param #" + j + " " + pvec[j]);        Class evec[] = ct.getExceptionTypes();        for (int j = 0; j < evec.length; j++)          System.out.println("exc #" + j + " " + evec[j]);        System.out.println("-----");       }    }    catch (Throwable e) {       System.err.println(e);    }   } }
这个例子中没能获得返回类型的相关信息,那是因为构造器没有返回类型。

这个程序运行的结果是:

name = Constructor1decl class = class Constructor1param #0 intparam #1 double-----name = Constructor1decl class = class Constructor1-----
5.获取类的字段(域)

找出一个类中定义了哪些数据字段也是可能的,下面的代码就在干这个事情:

import java.lang.reflect.*; public class Field1 {   private double d;   public static final int i = 37;   String s = "testing";   public static void main(String args[]) {    try {       Class cls = Class.forName("Field1");       Field fieldlist[] = cls.getDeclaredFields();       for (int i = 0; i < fieldlist.length; i++) {        Field fld = fieldlist;        System.out.println("name = " + fld.getName());        System.out.println("decl class = " + fld.getDeclaringClass());        System.out.println("type = " + fld.getType());        int mod = fld.getModifiers();        System.out.println("modifiers = " + Modifier.toString(mod));        System.out.println("-----");       }    }    catch (Throwable e) {       System.err.println(e);    }   } }

这个例子和前面那个例子非常相似。例中使用了一个新东西 Modifier,它也是一个 reflection 类,用来描述字段成员的修饰语,如“private int”。这些修饰语自身由整数描述,而且使用 Modifier.toString 来返回以“官方”顺序排列的字符串描述 (如“static”在“final”之前)。这个程序的输出是:
name = ddecl class = class Field1type = doublemodifiers = private-----name = idecl class = class Field1type = intmodifiers = public static final-----name = sdecl class = class Field1type = class java.lang.Stringmodifiers = -----
和获取方法的情况一下,获取字段的时候也可以只取得在当前类中申明了的字段信息 (getDeclaredFields),或者也可以取得父类中定义的字段 (getFields) 。

6.根据方法的名称来执行方法

文本到这里,所举的例子无一例外都与如何获取类的信息有关。我们也可以用 reflection 来做一些其它的事情,比如执行一个指定了名称的方法。下面的示例演示了这一操作:

import java.lang.reflect.*; public class Method2 {   public int add(int a, int b) {    return a + b;   }   public static void main(String args[]) {    try {       Class cls = Class.forName("Method2");       Class partypes[] = new Class[2];       partypes[0] = Integer.TYPE;       partypes[1] = Integer.TYPE;           Method meth = cls.getMethod("add", partypes);       Method2 methobj = new Method2();       Object arglist[] = new Object[2];       arglist[0] = new Integer(37);       arglist[1] = new Integer(47);       Object retobj = meth.invoke(methobj, arglist);       Integer retval = (Integer) retobj;       System.out.println(retval.intValue());    }    catch (Throwable e) {       System.err.println(e);    }   } }

假如一个程序在执行的某处的时候才知道需要执行某个方法,这个方法的名称是在程序的运行过程中指定的 (例如,JavaBean 开发环境中就会做这样的事),那么上面的程序演示了如何做到。

上例中,getMethod用于查找一个具有两个整型参数且名为 add 的方法。找到该方法并创建了相应的Method 对象之后,在正确的对象实例中执行它。执行该方法的时候,需要提供一个参数列表,这在上例中是分别包装了整数 37 和 47 的两个 Integer 对象。执行方法的返回的同样是一个 Integer 对象,它封装了返回值 84。

7.创建新的对象

对于构造器,则不能像执行方法那样进行,因为执行一个构造器就意味着创建了一个新的对象 (准确的说,创建一个对象的过程包括分配内存和构造对象)。所以,与上例最相似的例子如下:

import java.lang.reflect.*; public class Constructor2 {   public Constructor2() {   }   public Constructor2(int a, int b) {    System.out.println("a = " + a + " b = " + b);   }   public static void main(String args[]) {    try {       Class cls = Class.forName("Constructor2");       Class partypes[] = new Class[2];       partypes[0] = Integer.TYPE;       partypes[1] = Integer.TYPE;       Constructor ct = cls.getConstructor(partypes);       Object arglist[] = new Object[2];       arglist[0] = new Integer(37);       arglist[1] = new Integer(47);       Object retobj = ct.newInstance(arglist);    }    catch (Throwable e) {       System.err.println(e);    }   } }

根据指定的参数类型找到相应的构造函数并执行它,以创建一个新的对象实例。使用这种方法可以在程序运行时动态地创建对象,而不是在编译的时候创建对象,这一点非常有价值。

8.改变字段(域)的值

reflection 的还有一个用处就是改变对象数据字段的值。reflection 可以从正在运行的程序中根据名称找到对象的字段并改变它,下面的例子可以说明这一点:

import java.lang.reflect.*; public class Field2 {   public double d;   public static void main(String args[]) {    try {       Class cls = Class.forName("Field2");       Field fld = cls.getField("d");       Field2 f2obj = new Field2();       System.out.println("d = " + f2obj.d);       fld.setDouble(f2obj, 12.34);       System.out.println("d = " + f2obj.d);    }    catch (Throwable e) {       System.err.println(e);    }   } }
这个例子中,字段 d 的值被变为了 12.34。

9.使用数组

本文介绍的 reflection 的最后一种用法是创建的操作数组。数组在 Java 语言中是一种特殊的类类型,一个数组的引用可以赋给 Object 引用。观察下面的例子看看数组是怎么工作的:

import java.lang.reflect.*; public class Array1 {   public static void main(String args[]) {    try {       Class cls = Class.forName("java.lang.String");       Object arr = Array.newInstance(cls, 10);       Array.set(arr, 5, "this is a test");       String s = (String) Array.get(arr, 5);       System.out.println(s);    }    catch (Throwable e) {       System.err.println(e);    }   } }
例中创建了 10 个单位长度的 String 数组,为第 5 个位置的字符串赋了值,最后将这个字符串从数组中取得并打印了出来。
下面这段代码提供了一个更复杂的例子:

import java.lang.reflect.*; public class Array2 {   public static void main(String args[]) {    int dims[] = new int[]{5, 10, 15};    Object arr = Array.newInstance(Integer.TYPE, dims);    Object arrobj = Array.get(arr, 3);    Class cls = arrobj.getClass().getComponentType();    System.out.println(cls);    arrobj = Array.get(arrobj, 5);    Array.setInt(arrobj, 10, 37);    int arrcast[][][] = (int[][][]) arr;    System.out.println(arrcast[3][5][10]);   } }

例中创建了一个 5 x 10 x 15 的整型数组,并为处于 [3][5][10] 的元素赋了值为 37。注意,多维数组实际上就是数组的数组,例如,第一个 Array.get 之后,arrobj 是一个 10 x 15 的数组。进而取得其中的一个元素,即长度为 15 的数组,并使用 Array.setInt 为它的第 10 个元素赋值。



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件GPT4文章生成器软件
一直有人问我用文章怎么自动生成器操作,这个软件脚本就可以自动群发文章生成器作用,他是对接 GPT4.0 生成的,而且是最新的接口,他这个网站接口还是基本稳定的,不管怎么整,他都还在,也经过历史的检验了,这个脚本已经是去年做的,拿起来直接现在还可以用,说明还算稳定了,现在增加一个接口选择,他接口是一个字母代码的,也加上了清空会话,不然网站会发现在弄了太多会话,会有可能把你的号给封了,是一个变态的操作,如果一
信息发布软件816商务网全自动发帖软件
816商务网全自动发帖软件,这个网站也做了两个版本,一个是低配版,POST 提交,可以自动传图,自动切换标题和内容,导入账号就可以用,另一个是能看到界面的,也是导入多标题多内容组合发出去,一个是占用资源只有几 M,一个要渲染网页 CSS 和 JS 自然要用的资源多一些,现在也是很大的证明,如果网站没有对接百度蜘蛛池的,可能收录不如普通的版本,因为他不会执行百度的那几个 JS 文件,普通版当然就是模拟发帖的,自然会执行所
信息发布软件第一枪网站发布帖子B2B网站群发工具
第一枪网站发布帖子B2B网站群发工具,这个网站和普通的 B2B 网站没有什么大的区别,注册需要上传营业执照和手机短信验证码的,比较正规的那种,这个脚本可以发展会管理,可以发资讯管理,还可以布产品信息,软件登陆有一个拖动的验证码,会比较麻烦,所以这个软件是采用了缓存登陆的方式进行,发布帖子前一定要先采集一次缓存,这样就省去了每天跑去手工登陆账号的麻烦事。导入标题好内容,这样就可以省去一些麻烦事,软件能自动组
信息发布软件搜巴巴全自动群发软件
搜巴巴全自动群发软件,这个是同城分类信息网站,这类网站是 N 年没有更新的了,虽然漏洞比较多,但现在随着病毒终结,杀软也没有再去折腾这些事,现在毒与杀是存在这种微妙的关系之中,这个网站发的是商务同类信息,其实和 B2B 网站也没有多大的区别,网站给钱就可以发帖,自己可以充值套餐,反正这些网站是收录好,就发出去让别人充值一把作为建网站的收获期吧,这类网站有的收录好,有的是收录差的,不过新网站短期爆发收录好,
信息发布软件本地生活网全自动群发软件
本地生活网全自动群发软件,这个网站是本地生活的网站,他主要是发家电维修类的内容比较多一些,还有一些是商务服务类的信息,这类网站现在收录好的,也就那么几个,后来者往往很难居上了,他们都大多数是收费模式,给多少钱发多少帖一天。网站登陆是普通汉字验证码,发帖有分类,电话号码和发帖标题已经调用在标题上面了,发多少帖子这个按钮调用也是有用的,简介和地址分别有列表调用,你只需要导入进去就可以了,这个上传图片也
群发软件首码项目网发布宣传软件
首码项目网全自动发帖软件,这个网站是一种后台头条模式的,他有点像 ZBLOG 形式,很多人是没有啥动力放弃一些收录不好的网站,而总是舍又不舍得,放弃又还是在发帖,变成了一个一个背包,越积越多,效果越差,这里建议的是,三个月收录不好的网站就扔了,你可以很多模板,有时候你做对了很多事情,但因为百度蜘蛛就是和你斗气,看不上你的域名,看不上你的服务器,就会不收录,是完全不收录的那种状态。那就果断换域名,换服务器
群发软件天龙新闻网站B2B网站群发工具
天龙新闻网全自动群发工具,这个网站 POST 版本会比较容易提交,他有二个分类,一个是资讯管理,一个是文章管理,现在这些网站基本是发几百条后,有几条是收录好的,原因不言自明,发的多了自然就有可能被收录,没有什么大的技巧,对于百度来说,这类广告信息太多了,他肯定要随机选几个收录到自己数据库中的,几乎没有什么悬念的事,而对于发的人来说,只能发大点量,提高自己被成为天选之子的好处吧,如果选不中,那就继续发,或
群发软件一路供应网站发布宣传软件
一路供应网站全自动发帖软件,这个网站是发布供应信息软件来的,网站只有两个版块可以发,一个是文章,一个是资讯信息,其它发了也不收录,网站已经下架过去了。像这类网站信息,最好当然是用一些 GPT 写文章,生成一些原创文章收录会好一些的,可是很多人总是拿着老一套,内容就改前面一段就行,这样效果当然很差劲了,形成了一些恶性的循环环不收录的机制,除非网站有很大机率被收录,不然就很难有好运气砸中自己的,网站这里只
群发软件海威数控软件群发脚本下载地址
海威数控软件群发脚本下载地址,这个海威是一个 B2B 网站,他发帖的时候是比较慢的,所以软件准备了二个脚本,一个是 POST 提交,一个是普通网页版本,后台提交当然会快一些,而普通版收录当然好一些的,这个也是因为网站有这种梗导致需要准备两个版本,上传文件和其它网站不同,他这个记录的刻印号和别 B2B 网站不同,只是少了几个提交的字母,所以就需要改版,POST 提交是严谨的,而普通版本就没有太多讲究,啥都可以提交,就是
群发软件多宝网POST版本和普通版本一起群发软件
多宝网POST版本和普通版本一起群发软件,这个软件版本分了两个版本,一个版本是底层提交的,这样就不会占用电脑网络和电源 CPU 的资源,他用的量是极少的,对于差的电脑会有更兼容的运行效果,另一个是普通网页版本,这个版本对收录会有一定的优势,但会资源消耗的会比较多一些,同是一个网站整了两个版本也不过是客户要求的罢了,他有一个电脑比较差,又要挂上几十个脚本,那就只好用这种版本的提交方式了,这个版本上传图片这些
群发软件桂林生活网全自动论坛群发软件
桂林生活网全自动论坛群发软件,这个网站是发生活信息的,有点像是二手车房产之类的网站,不过他是论坛改版的,功能并不会有多少,他分类信息这些也有很多的改变,登陆是拖动验证码,发成功帖子后,就可以自动的提示审核的节奏效果,网站登陆验证码需要用录像的效果进行拖动,不然下次他有可能会拖动不成功,下拉选择这些电话号码这些可以自由更改成自己的,分类地区选择的是七星区,下拉这些是固定的,没有做自动变换, 些都没有
群发软件快手图文群发软件
快手图文群发软件,快手又有重大升级,不得不把这个脚本软件给改一下,这个是发图文的软件,用缓存登陆一下账号,姓名这里已经改版,采集缓存有所变化,所以重做了一个步骤,上传图文这里已经不可以出直接用访问网址了,只能打开网页,然后点击一下上传图片才可以传成功图片,其实上传图文这里,最大的不同就是图片上传几张,现在可以上传十多张网站会自动帮你转换成视频,然后软件就是帮你上传上去,标题也帮你输入进去,他这个加
群发软件免费蜘蛛池效果软件下载
免费蜘蛛池效果软件下载,这些蜘蛛池都是几亿收录效果的超级网站,他们也是得益于网站主是一个钱爸爸,因为他们的硬盘能装这么多的东西,也是超级无敌的冤大头罢了,随着发的人越来越多,他们发展效果自然也不在话下,能有一个超级大的留存力度,虽然看上去是没有什么人去,可是收录也会因为水涨船自然高的样子存在,网站有的有验证码,有的没有,这里收录十一个最好效果的网站放在那里,有的网站可能随后会标为不稳定,但也没有办
群发软件百家号个主页宣传软件
百家号个主页宣传软件,他这里主要是导入账号,然后修改个性签名,修改自己账号名称,生成一个主要进行操作的,这个一直都有人在弄这些数据的改变,不过他这个前详细说明,似乎要通过实名认证才可以填入,名称是随便一天可以改三次,这个操作虽然很费账号,但效果也是很显然的,毕竟是百度自己家的东西,只要你有蜘蛛池,丢进去,百分之五十的机率都会被收录,而且这种操作排名也是相当高的,只要不被提示,几乎很久都会存在于快照
群发软件咪咕创作者平台自动上传软件下载地址
咪咕创作者平台自动上传软件下载地址,这个网站是自动上传内容的网站,有点像是头条网站,有点像是发视频音乐的网站,他这个网站缓存会比较难弄,需要用 JS 的模式写入,不然就会无法写入缓存的,而且需要清空,不清空会直接给断开链接,不能直接写入缓存,上传好文件,就可以输入标题和描述内容了,看上去很容易,实也示做起来一点也不轻松,他妥妥的要点时间去写好动作才可以自动发帖的,分类这里会比较麻烦,需要用键盘按下键才
群发软件YX工具站全自动群发软件
YX工具站全自动群发软件,这个网站是一种导航网站,和一些装系统的工具盘类似的,网站用一种流量拉高自己网站排名的形式进行发展,先是打开首页,你不知道后台得和他买号会发给你,不过脚本软件都是通用的,打开登陆接口,登陆好账号,后面就可以访问发帖投稿的网址,打开输入标题和内容就可以发帖,其实是和先前的那几个什么首码网站是一样的,他网站也有做好这里的友情链接在里面进行扩展,网站开始收录好,后面就不知道了,毕竟
群发软件AR首码网全自动发帖软件
AR首码网全自动发帖软件,AR首码网全自动发帖软件是一款专为网络营销人员设计的强大工具,它不仅能够极大地提高工作效率,还能在一定程度上帮助企业或个人实现信息的快速传播。随着互联网技术的发展,特别是社交媒体平台的兴起,如何高效地管理和利用这些平台成为了众多企业和营销人士关注的重点之一。正是基于这样的背景,AR首码网全自动发帖软件应运而生,旨在通过自动化技术解决传统手动发布内容时所面临的时间成本高、效率低下
群发软件百度AI高光视频剪切群发工具
百度AI高光视频剪切自动发百家号网站软件,这个百度 AI 视频已经运作了一段时间了,虽然总是卡来卡去的,但起码人家还是能顶一点事的,不管怎么样,还是很多挂羊头卖狗肉的产品可以发布,比如这个你丢了下视频给他,他会自动把你视频段割出来,然后自动发到百家号,居然几乎不用审核就出来了,你以为他们用的是很好,其实他们是为了审核通过罢了,这样发出去省时省力,这个软件就起到这种作用,但他剪切的是很慢的,有的要三分钟之
群发软件优秀网全自动群发软件
优秀网全自动群发软件,这个网站是充值后台的发帖形式,如果不会找网站发帖,这类网站其实已经集中了 N 多个网站放在了后台供选择发帖了,人家也是真正钞票,把网站给做起来的,你也不要怪别人商人目的性强,毕竟都是一分钱一份货的买卖,他们收录好,你认真的发帖,也算是一件不可多得的好事放在那里了。你还有什么可以失落的事呢,网站分类这个点击全部放到了列表了,有不想发的分类可以自己去删掉就行,没有什么难度的,不过网
群发软件搜狐博客群发软件
搜狐博客群发软件,这些偶断丝链的博客也是极度让人怀念的,这不,搜狐博客又来了第二春,现在的收录确实是比以前几十年的收录更加好,他们全部都是一种怀旧的形式的活着,但也不是很乐观的样子,因为他们配置的服务器可能只有一台老掉牙的托管源,你也不用想着他能有多快提交,他们也总是会一卡一卡的样子呈现在那里,发帖如果出验证码就歇菜,不是软件不能识别,而是网站他转几下验证码都不知道在哪里,然后图片就碎在那里了,这
群发软件咔嚓娱乐网全自动发布帖子软件
咔嚓娱乐网全自动发布帖子软件,这个网站是一种后台登陆方式进行发帖的,他登陆有一个验证码,后台是头条形式,你充值给网站就可以发帖,注册进去后可以自主注册账号,但免费账号是发不了帖子的,这类网站可以说有几个之多,他们都有的是养网站的,把好的挑出来卖账号,把差的扔进沉默成本里了,这类网站发帖是比较简单的,他点击下拉这里,已经全部放到了变量增加区里进行更换了,这样就不会把分类全部雷同,全部可以自由更换的,
群发软件小红书视频批量上传软件下载地址
小红书自动发布视软件下载,这个网站图文发的人是比较多的,不过视频现在也可以,只是他网站现在在逐渐改版中,现在他网页进去后会有一层的透明的 DIV 层,你如果不点击一下,会以为软件失效了,这个网脚本是用缓存登陆好,然后进去后用座标点击一下视频二字,再去判断账号登陆成功了没有,有没有提示要绑定手机验证码,有没有登陆成功,三个判断,再上传视频,下拉标签这些功能,他网站这里需要用复制和粘帖功能,才可以实现内容
群发软件温江直聘网站全自动发帖软件
温江直聘网站全自动发帖软件,这个网站也是发普工类信息的网站,网站不用登陆账号和密码,也不用自己注册,只需要打开发帖页面,输入标题和内容就可以全自动的完成发帖,发帖的时候注意右上角采集的标记,他是帮助你采集到发帖链接的作用,右上角也有一个手机号码,要改成自己的哦,看很多傻家伙,一直放着默认的联系方式拼了老命的发帖,这不是有点笨吗,那个是默认的设置,需要导入自己的广告标题和广告内容,联系方式,进行发帖
群发软件拓英人才网全自动发布帖子软件
拓英人才网全自动发布帖子软件,这个网站是人才网来的,一般也叫普工发布网站,网站就一个输入密码就行,根本不用手机号和验证码,非常多人发,发的标记要填好,不然是采集不回来自己帖子的。这类网站权重其实很低的,但也架不住无限的刷帖子,然后把链接采集回来,提交给百度蜘蛛池那边的,只要发的链接够,收录其实很轻轻松松的,只是很多家伙太不懂得宣传的底层逻辑了,他们往往就几个内容,拼了老命的发,也不知道让人工智能多
群发软件单县招聘网全自动群发软件
单县招聘网全自动群发软件,这个网站就是发招聘信息的,最好的方式是他不用整手机号码了,现在的一大趋势,因为方便才是真材实料的利好,网站一个普通的验证码,就可以直接发帖,填上姓名,作为标题,简介作为内容就可以发布成功,发成功后,需要自己填一个标题的标记,比如标题或是联系方式,填上自己手机号码,这样就可以只采到自己的网址,不会采到别人的网址了,采好的链接可以放到蜘蛛池里自己作为收录点,疯狂的发送起来,先
群发软件天涯生活网全自动群发软件
天涯生活网全自动群发软件,这个是 B2B 网站来的,后台都是一样,但网站可能自己也不知道,他把分类这些项目给弄错了,导致很多都错位了,他这个版块发的是 25 后面的去了,网站只有两个分类收录比较好,一个是资讯管理,一个是文章管理,其它什么问答管理和生活管理基本没有收录,这个脚本在逻辑判断进入分类里进行了调整,因为不调的话他就会发不了,因为他这些分类的汉字给改了,所以和别的网站不,不改是铁定发不了帖子的,这
群发软件印象首码网全自动发帖软件
印象首码网全自动发帖软件,这个网站是一种后台付费发送模式,先前这类网站发啥都能秒收录,他是一种头条形式的网站,也因为收录好吧,所以很多人弄了这类网站批量生产内容,然后把收录好的网站给都给留下来了,这类网站后台还是比较强大的,充值后就可以自动开通 VIP 直接可以发,进入后台就是输入标题内容就可以发送成功,不过他每一个网站的分类会有所区别,发分类的时候,需要自己加一个点击一下才可以分类选择成功,网站这个
群发软件易次元工作室全自动创建工具
易次元工作室自动创建工具下载,这个网站是网易的动漫网站,不变的趋势吧,这么多人待在上面玩游戏,看动漫,估计一有点时间也会在里面浪费掉了,网站可以发帖,但发帖容易封号,我看他不如去创建一个工作项目比较靠谱,这里给标题给简介,而封号少还给单独的链接,给我们有宣传发帖的空间,项目创建一个就可以采集回来链接,还是很容易发成功的,没有验证码,缓存登陆网站的。 易次元工作室全自动创建工具下载地址:
群发软件精英论坛俱乐部论坛自动发布帖子软件
精英论坛俱乐部论坛发帖软件,这个网站注册账号后要 48 小时才可以发帖成功,是台湾那边的网站,网站论坛是很老的效果了,不过他里面有 N 多款游戏,还是一个很多人聚餐的地方,发帖没有验证码,注册账号有手机验证码和邮箱注册,注册成功的验证码,和登陆的验证码位数是不同的,这个要注意,网站发帖的时候比较简单,就输入标题和内容就可以成功完成,没有什么大的限制,但发广告还是会被抓到封号的,这个网站属于快餐文化,可不
群发软件优秀网全自动群发软件
优秀网全自动群发软件,这类网站有的收录极好,全部超出了你的想象力,不过这类网站收录信息都是收费的,他们用的是站群形式,总有那么几个网站表现的会极其优秀的呈现,网站登陆后台就可以发帖,前台是一种投稿形式主义,发帖只要输入标题和内容,还有一个分类也放在了我们软件列表上了,这样就可以随时更改,出问题也容易纠正,这类网站都是自研平台,BUG 肯定是有很多的,好在发帖验证码他没有上 BUG,不然就要额外的费用了,发
群发软件搜巴巴分类信息网全自动发帖软件
搜巴巴分类信息网全自动发帖软件,这个分类信息网站可以免费发帖,但是网站对免费账号是有限制的。付费账号发的帖子就比较多,发的多收费自然也会比较高的,首页发帖要先绑定好手机号码,他注册如果是邮箱,就要自己去绑定一下手机号码,如果不是就不用绑定,可以手机验证码直接注册账号,分类可以在第二个访问网址动作自行更改的,没有什么大的限制,就是他这个上传图片总是会卡在那里,没在特别需要可以不传,标题内容导入就可以
群发软件精英乒乓网自动论坛发帖软件
精英乒乓网全自动论坛发帖工具,这个是一个普通的论坛,看很多人都几乎把网址给堆满了天,收录还是蛮好的,只是他注册账号是容易的,但注册成功后要手机验证码绑定一下账号才可以用,不然是发不了帖子,登陆的时候会有一个动态的验证码,只能用截图然后识别发帖,发帖还有一个动态图片验证码,需要识别成功才可以发帖成功的,基本用火眼就可以发成功就是步骤会有点多而已做好已经是三十多步的格局在里面了。这个截图发验证码的,不
群发软件杜桥东部人才普工群发
杜桥东部人才普工群发,这个网站每发一条帖子需要短信验证码,软件已经对接好网页验证码的获取平台,自己打上平台账号就可以,现在他那个 API 接口账号和密码已经更改了,要注意自己获取到来,更改后全部会变,软件这里的账号密码不是登陆账号,是他平台的 API 特有的账号密码才可以用的。这个平台发帖的,现在没有其它验证码的,还是比较方便发帖的,短信验证码其实只能用一次,因为是共享的平台,你也不知道别人用它手机号码发了
群发软件天天洁日志自动发布软件
天天洁日志自动发布软件,这个网站是自动转发采集那个绿猫网日志的,以前有这个脚本,很多人让我找这个天天洁的发布日志网址在哪里,我看了一下我用以前天天猫的网站也是可以登陆的,发布日志后,他几个小时才能同步过去,怪不得绿猫网会有这么好的收录量,原因就是因为他还有很多未知的网站转发了他发的日志,以前就很多网站为了拉自己主网站,偷偷自己弄了一些小网站转发里面的日志,而以前蜘蛛又比较天真可爱,所以就可以拉高了
群发软件京东私信群发软件
京东私信群发软件,京东对账号管得还是很严格的,可是也是一个发私信的好地方,这个脚本是通过对店铺信息采集,然后自动跳到商家地址去自动采集发信息的,所有功能都分开了,采集是按关键字进行采集的,然后逐个的自动发信息,软件能自动的切换账号,自动跳到他网站又会重新开始发帖,网站开始是没有什么大的限制,但疲举报后会被禁言,有购买记录的号会比较耐用,原理自然就是有纠纷的更加耐用了,网站账号可以导入网页的账号缓存
群发软件小红书全自动图文软件新版推荐
小红书全自动图文软件,由于小红书有所改动,特别更新一下小红书软件,小红书这个输入内容现在只能用复制文本,再贴进去,不然他会说你没有输入内容的,网站没有什么大的限制,就是发非法的东东肯定封号的事,图文一般都是比较好的流量,视频这些流量会相对质量没有那么高,都是卖货的多吧,图文这个一般是先传图片几张后,他会自动合成一种视频格式的播放模式,再加上一些文字作为段落的,网站对于发帖还是比较友好的,可以做百度
群发软件搜购网全自动发帖软件
搜购网全自动发帖软件,这个网站是 B2B 网站来的,发的人也是很多,要注意一个问题是你登陆的时候千万不要输入错误的密码,不然多次后,发帖都会有验证码,这就特别的烧钱,要是遇到这个事情也不用太担心,你只需要换一个 IP 就可以避免验证码的出现,不然就得等 48 小时再消失这个验证码的,这个得注意操作哈,网站是要付费账号才让发帖,免费号基本不让发帖,不然也会安上验证码,打码的钱算起来也够买他网 VIP 了,网站后台会有
群发软件爱卡车评论软件
爱卡车评论软件,这个网站还是爱车一派的最爱网站,发头条是可以秒收录的,不过评论还是靠刷的多,当然正规的评论也是可以上去的,虽然网站说要审核,评论最大的问题就是看上去上去了,一会又被删除的可能,网站过滤一遍,判断 IP 判断内容,判断账号频繁度,就给你安排存还是减的命运,不过量多了,总是会有很多漏网之鱼,有的人偏爱瞎看的,一条好内容往往都会带有 N 多评论,这样有利于自己主帖的排名,曝光度的呈现,都是很有
群发软件中国混凝土网站注册账号个人主页宣传页面
中国混凝土网站注册账号个人主页宣传方式,这个网站是很麻烦的 B2B 网站注册网页,不过只要完善好主页所有信息后,就可以无碍的开启主页作为宣传点,企业名作为关键字,简介作为发帖内容,是一个很不错的宣传点,注册的时候只有一个普通的字母验证码,其它几乎没有什么难度,就是步骤有点多,全部要填上才可以的,网站现在开放状态,不用换 IP,一个就可以无限的注册成功,注册成功填完所有信息后,软件可以自动的保留链接到记事本
群发软件16DS网站自动群发软件
16DS网站自动群发软件,这个网站是一种化工网站来的,可以发布商品,也可以发布帖子,一般号只能发帖子,收录还是可以的,不过一个号只能发三帖子,你要大量发帖,需要在账号列表放多一些账号去,不然是发不了太多帖子的,不知道网站 VIP 服务是多少帖子了,估计也是便宜货,毕竟全部是自己源码开发的网站,还是有价格的,软件现在设置的是发三个帖子就自动换号,要是没有号就只能发三帖子,收录概率不会很高,也会有收录,只是效
群发软件化工综合服务商网站全自动发布帖子
化工综合服务商全自动发帖软件,这个网站秒收录是比较高的,这个网站注册账号有几十项要填写的,非常试,不过也没有办法,人家的规则就是这样子,不知道是不是付费网站来的,反正登陆账号也是可以发招聘信息的,可是我看他们秒发秒收录,也不知道怎么整出来的,普通账号是每发一帖就会提示审核中,每一个帖子都要审核,可明明别人秒发就可以不用什么审核,全部都多数是秒收录上去的,收录可谓不是说不好,而是太牛了,虽然是化工网
群发软件电子工程世界论坛自动发布帖子软件
电子工程世界论坛自动发布帖子软件,这个网站注册账号会比较麻烦一些,他是先关注网站的公众号,然后公众号自动发一条短信给你手机验证码,才可以注册成功账号,注册成功的账号还要填账号密码信息,才可以注册成功,成功后还要等上五分钟,新账号才可以发帖的,不过这个论坛收录是一般的好,几乎都是秒收录的盛况。导入标题关键字到标题列表,软件会按列表从上往下自动切换着发,内容也是一样,想通过组合就放多个内容列表中去,如
群发软件领动商务网发布宣传软件
领动商务网全自动 B2B 网站群发软件,这个网站是 B2B 网站,他后台也有很多网站可以发,自己看哪一个对自己关键字收录好的才去买号发,这个网站脚本只要导入标题和内容就可以全自动发帖,没有什么难度的,什么都可以发,不过搜狗收录比较多,其它收录很差劲的,图片需要导入到图片列表,关键字可以导入标题 1 也可以导入标题 2 二个列表进行组合,内容也是一样的,多导入不同的内容有助于收录,现在都人工智能时代了,不要总是弄几
群发软件天涯生活网全自动发帖软件
天涯生活网全自动发帖软件,这个网站后台有几百个网站供选择发帖的,有的收录好, 有的收录差,看菜可以下饭的网站,给钱买一个套餐发帖卡,就可以无限的发帖了,有的网站是扣点的,就是每发一个帖子,就可以发多少帖,有的是套餐的,什么样的账号一个月可以发多少个帖子的形式,这个网站后台的文字改了,弄的后面不能通用的发帖了,他把生活必需用的关键字调用在那里,看上去当然很麻烦了,不过只做好一次就可以自动发帖了,也没
群发软件78动漫网发布宣传软件下载
78 动漫网全自动发帖软件,这个网站注册的时候需要短信验证码,注册好后就可以用账号密码登陆网站,软件是自动登陆的,导入标题内容到软件里,就可以自动发帖,发帖步骤会有点烦,要选择话题,选择分类,还要选择版块,他发帖地址全部是统一的,只有版块和话题这些是动态的,选择哪一个就可以发到哪一个版块去,软件这里是集中发到他高达的这个版块里面去的,发哪都一样,收录是比较好的,大动漫现在还有很多人喜欢追,毕竟抓人眼
群发软件混凝土网站自动B2B网站注册软件
混凝土网站自动B2B网站注册软件,这个网站是 B2B 网站后台,看上去是大站,实际全部是站群类似的,网站就是注册一个账号,然后让你输入标题,再输入公司简介,作为宣传的关键字和联系方式作为基准点的,注册的时候有一个算术验证码,软件可以自动计算出来,还有一个字母验证码,自己用火眼就可以过完,挂在那里也可以每天注册几万个账号的,然后通过收录最大取胜,后台填写也没有验证码,比较省钱的那种,不限制 IP,注册长久存活
群发软件宁美母婴论坛全自动发帖软件
宁美母婴论坛全自动发帖软件,这个网站有的人打开会很慢,有时候会很快,全看自己运气了,有的人可以发日志的,可以跑去发日志,不过论坛收录会高一些的,一般都发论坛,这个网站是不能用什么常规思维去搞的,他网站看上去是注册账号的,但注册账号并不能发帖成功,发邮件这些也是收不到的,直接用 QQ 号登陆,点一下 QQ 号登陆,然后把缓存放到软件里才是最优的方法,也可以用微信搜码登陆,微信搜码登陆只能保留缓存一天,QQ 号
群发软件揭阳招聘网站自动发普工信息软件
揭阳招聘网站自动发普工信息软件,这个网站是免费发广告的网站,他都是需要短信验证码解码后才可以发送,这种网站不用注册账号,只需要付出几个短信验证码就可以完美的发帖成功,收录还很牛的样子哦,只是现在短信平台总是改来改去的,就有点麻烦,但做好一次就可以疯狂发送也是很值当的,网站是网页发帖的形式,自己导入好关键字作为标题,这个是输入姓名和工作名称里去的,内容就是直接输入简介里的,为了方便收录,这个每一个号
群发软件第一枪B2B网站自动发布宣传软件
第一枪B2B网站全自动发送帖子软件,这个是 B2B 网站后台,比较复杂,不过你要是用缓存写入他的登陆方式就简单太多了,这个是通用脚本,按客户的思路定制的,先是用缓存登陆网站,然后打开产品和资讯的发送网页,输入标题,清空内容,为什么他网站要有一部清空呢,原因是网站他自动会给你上一段内部的内容例子,你还必须去清空,不然他就会在你输入内容的后头里呆着,手工发的时候你感觉不到,因为一点,会自动消失,软件点不行,只
群发软件脉脉专栏网站自动群发工具下载地址
脉脉专栏自动发帖软件,脉脉这些大网站都基本有头条专栏的,而且都只能发正规的内容,他一般都需要审核的,账号也比较难搞到,发的人不多,可收录会比别的都好,他们都限制发多少,所以这个脚本都做了发帖切换账号的功能,发多少就切换一次账号,这样正规的内容一般都可以无限的循环发帖,加上现在智能人工写文章,其实收录会很吓人的,内容这里是图文并茂在一起的,图片上传了两张,是用 POST 上传的,看不到过程,调用是图片变量
群发软件小站教育全自动注册发提问软件
小站教育全自动注册发提问软件,这个网站一个手机号码一个验证码,只能注册一个号,成本比较大,但效果也是蛮好的,注册有一个字母验证码,一个短信验证码,软件全自动完成,注册的时候用户名不能超过 10 个字,软件用户名是调用标题 1 提问的时候是调用总标题总内容的,注册成功后,软件会自动去发一条提问,因为你到时收录的是个人主页,有一条提问,就有了联系方式,有了联系方式就在了关键字,有了关键字就有了内容,这些都是
群发软件弈城围棋论坛全自动发帖工具
弈城围棋论坛全自动发帖工具,这个网站是学棋的,现在素质教育成了很多人消费的场所,有人气的地方就有江湖,所以收录都不会差到哪去,他们往往就是百度蜘蛛看热闹的地方,哪怕是论坛有几个人对骂吵架,都成了它爱去的场所,带来了吃瓜群众的心情。这个论坛发帖没有验证码,注册一个简单的验证码,注册成功就可以发帖,没有啥限制,因为是论坛来的,所以发帖数量可能会被有限制,软件可以设置多少帖就换一个账号的。其它不用设置什
群发软件奇幻世界社区发帖软件
奇幻世界社区发帖软件,这个是繁体网站只是一个游戏论坛,估计是台湾省那边的主题网站,游戏不知道有没有人玩,看收录还是可以的,注册账号有一个验证码,看的不是很清楚,不过随便输入就可以注册成功,网站写的比较差劲,但还是可以有收录的,自创论坛就是这个模样的多,这些字体也比较难看得出来,好在猜也可以猜出点意思,发帖自然也能发出去的。这个软件写了登陆步骤,可以自己换号,发帖成功,也有采集成功网址到记事本里,自
群发软件OAWXW复印机维修论坛全自动发帖软件
OAWXW复印机维修论坛全自动发帖软件,这个网站是类坛来的,需要用微信关注他的公众号,才可以进行发帖,注册成功网站账号后,还要手机验证码一次,才可以发帖,这个脚本是用缓存 CK 进行登陆的,采集的时候只能用两个参数,不然网站采集回来的缓存是最后对不上发帖的那二个验证码的,一个是算术的,一个是汉字的验证码,这种汉字验证码只能用火眼去打码,不然失败率高,自动的识别率不高,当然现在人工智能还是可以的,就是还蛮贵
群发软件易次元网站自动刷帖子软件
易次元网站自动发布帖子软件,这个网站现在还是很多人跑去玩的,所以收录肯定都是秒收录的,像网易的网站,大多数都是各种各样的验证码,各种各样的邮箱验证的,看上去安全策略够高了,可在人工智能打击下,他的验证码都已成摆放了,这个网站发帖可以秒收录的,但新号可能要审核一次验证码,登陆是用缓存的,没有买到 CK 号就只能自己先把号全部登陆一次,软件可以点击采集缓存按钮,就可以全部缓存到碗里去的。发帖内容只能用键盘
群发软件汽车之家头条号自动发帖软件
汽车之家头条号自动发帖软件,这个网站登陆有验证码,所以脚本写成了用缓存登陆,这样切换账号,就可以方便一些,每天也不用自己手工登陆,蛮方便的操作了,网站标题需要模拟键盘输入的方法,而内容需要用粘帖的方法进行操作,不然标题会没有输入成功,内容也会没有格式,他的这个内容图片会比较特别,需要用他网站的一种 IMG 标签,不然你粘进去的图片也会只有源码,但是用他网站格式的图片,就会很顺利的发成功,封面图片也能自
群发软件vk网站自动创建社区自动发帖软件
vk网站自动创建社区自动发帖软件,以前 VK 网站一直不给登陆账号了,现在又有人弄了一种超级缓存账号来登陆创建社区,然后自动发帖,这个脚本也是这样,最后还可以采集出来帖子网址扔蜘蛛池,完美的操作,这种号发多了也没有验证码,不知道他们在哪弄的,不过只要有缓存就可以用这个脚本,自动的登陆自动的发帖,你用这个脚本只需要导入标题内容和账号就可以,注意,账号是缓存形式,你要是几个号的,没有缓存,就自己登陆一下,点
群发软件临时工网站自动发帖手机版软件
临时工全自动群发软件,这个网站是一种手机网页来的,倒计时会比较多,你不点击他一些比如姓名,工作地区的选择,不点它是不加载的,加载要一点点时间,对于这个脚本来说,很多动作都需要加点倒计时,不然运行太快会导致发不成功的,不是说没有选择这个,就是那个,他这个介绍,更是弹窗的方式才可以输入的,其它还好,不过网站要手机验证码的,软件全部流程做好了,只要自己弄好短信平台账号到软件里面就可以全自动的运行下去,网
群发软件学习使我快乐自动注册软件
学习使我快乐自动注册软件,这个网站听起来会不会比较鸡血,不过人家就好这口,你也无能为力,网站注册很简单,用软件自带的邮箱账号就可以无限的注册,收到激活码一填就完成任务了,网站可以标题填写成昵称,介绍可以做成内容,这些都可以无限的注册,也不封 IP,没有什么限制,有蜘蛛池的大家们,可以工作优化对待这个网站的,网站收录还可以的,个人中心页收录了也很多,有先见之明,全部都不错的存在了,注册成功保留了网址,
群发软件分析百科网站网自动注册个人主页群发软件
分析百科网站网站自动注册个人主页宣传方式,这个网站是注册账号的,本来先前还可以发日志的,网站数据库的姓名没有改,所以发不了帖子了,密码对应不上,存不了数据的 BUG ,所有内容都不可以输入,但是标题可以,所有标题不超过二十个字,都能让网站存档的,这个是网站的 BUG,没有办法解决,解决这个网站也不存在了吧,注册账号有字母验证码,要短信才可以注册成功,宣传主页,只能填个人中心的标题,带上联系方式和关键字,收
群发软件ACFUN网站自动发布文章软件
ACFUN网站自动发布文章软件,这个网站本来是有一定的机率是可以成为 BIBI 那样的收录量的,但他们已经自废武功了,变得很严格几乎发什么都封号,所以发这个网站要有 N 多号用才行,这个脚本软件是发他专栏的,虽然上传视频的多,但也管得严格,这个专栏也不是每天可以发,管得严格的时候,就不让发,只是发爽文或是一些分类可以发的,其它分类有交通管制,导入账号和密码就可以登陆,一般不出拖动验证码,网站要业绩的时候就松,不
群发软件绿猫网日志发布软件
绿猫网日志发布软件,这个网站以前是一直都有做过的,只是很多人都说发不了了,其实他只是登陆不了账号,但注册账号还可以用的,注册后自动可以登陆,所以把注册写在这里吧,注册很简单,访问网址,用软件自动注册一个就可以一直发帖,每天如此,这个网站日志程序可以说是超级高人写的了吧,占用资源超级少,能沿用至今,可以说是牛人的感觉了,网站发帖有一个验证码,发帖的网址也可以保留下来,没有啥限制,全部帖子可以发,注册
群发软件象山招聘网全自动发帖工具下载
象山招聘网全自动发帖软件, 这个网站是短信验证码方式进行发帖的,现在发的人比较少,因为他先前可是改过名字的人,很多人如果不看他的 LOGO 会找不到他短信验证码的项目数字,这种网站一改码,就可能接收不到短信了,所以按他的 LOGO 名字为准,当然最好的方式是自己手机接收一条,按他发来的短信名字作为项目搜索关键字是最准确的,很多网站找不到项目也是因为网站换了一个名称导至后台找不到短信验证码关键字。网站不用注册账
群发软件老客网站自动发帖软件
老客网站自动发布帖子,这个网站以前是分类信息中的大佬,特别是房产类的信息,更是最多霸屏的存在,可惜现在没有人买房了,他也就没落了哈,不过最近看到他异类信息收录超级好,不知道怎么整的,全部是用缓存发帖的,就是登陆一个账号,因为他有验证码,所以都用缓存切换账号着发,他注册一个账号,采集着一个缓存,这样可以弄 N 多号,N 多帖子的存在了,发帖倒是要审核的,房产分类信息最多收录,其它收录不怎么好,挂羊头卖狗
群发软件易车网全自动发帖软件
易车网全自动头条群发软件,这个网站是发易车头条的公众号,因登陆常常有验证码,所以改成了用缓存自动登陆的状态,无非就是手工登陆一次,用软件保留好缓存就可以了,功能已经做上去了,省去了不少的事,这样就可以每天不用折腾登陆,自动导入标题和内容,还有图片,批量的发帖子,省时省力,完全可以不用去管理什么的,他网站发帖的时候,需要具专一张竖版图,还要上传一张框架图片,这才可以发帖成功,无法是用软件自动操作多几

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2024-11-16 10:21 , Processed in 0.324383 second(s), 45 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表