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

 找回密码
 立即注册
搜索
查看: 1832|回复: 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的动态代理时就不会像我一样茫然了。好啦,谢谢围观!



回复

使用道具 举报

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 个元素赋值。



回复 支持 反对

使用道具 举报

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

本版积分规则

相关导读
群发软件爱搜群网站自动发布软件
爱搜群网站自动发布软件,这个也是 B2B 网站,网站现在免费发帖都有验证码,每天有十帖的免费,都是集人气的一种措施,不过免费的发的这么少自然效果不会好到哪去,这个要了解哈,毕竟水桶的容易是按他的短板计算的,可不是什么随随便便可以改变的事,这个脚本分二个脚本,一个是后台运行,但您必须开好会员,不然肯定发不成功的,这可不是 POST 就可以自动的跨越他的限制,就直接可以发了,这是不可能的,除非人家允许这样免费哈
群发软件银盾皇全自动发帖软件
银盾皇全自动发帖软件,这里两个版本,一个是 POST 版本,一个是普通版本的,很多人非要弄两个版本去发一个网站,有时候需要快,有时候需要看到过程,所以很多 B2B 网站改成了两个版本,网站发帖是比较简单的,有账号就可以发,他们 B2B 网站本来就是用来发广告的,他们充好会员就可以一直发帖,网站是一种计件方式的,每发一帖就扣多少钱,网站越好,收费就越贵一些,便宜的网站也有人发,那些家伙也有的是图心里安慰的,也不【知
群发软件跑列网全自动发布软件
跑列网全自动发布软件,这个是 B2B 网站来的,只要导入好标题和内容,放好会员号就可以全自动发帖,这个是后台发送的版本,和普通的版本,只要有号就可以全自动发,两个版本放在上面了,看电脑吃饭,第一个就用的是普通版本,他能看到过程,一个是 POST 过程,他全程后台运行,可以多线程,发的会比较快,几乎不占电脑资源,后台静默运行,针对差劲的电脑设计的,不过您看不到过程有时候会心慌慌,人就是对没有掌控感的东西会产生
群发软件小木虫论坛自动软件
小木虫论坛自动发布帖子软件,这个脚本是手机版的,所以还是有必要发布一下的,网站每年这几个月,会超多人用,所以到处找这个软件的人也比较多,而 PC 不管是用的 POST 还是啥,都容易被封号,但是这个 WAP 端应该是老掉牙的地方,所以防火墙会有一个漏洞的,这个网站主要是内部号发的比较多,也就是他们自己的号,小号发还是有机率会被封的,最好有能力的还是拿到内部号,这个端的会发的比较快,可以自己发一些版块,导入比较多
群发软件鲁德软件平台提问软件
鲁德软件平台提问软件,这个网站是一种软件平台来的,软件在这个网站的提问版块进行提问,因为是提问的,一般一个账号就可以发很多,不过他是有一个极验证码的,软件这个脚本用的是图鉴平台进行打码,识别还是很便宜的,直接可以拖动对,没有用 POST 的那个极验证码平台,感觉他们现在已经差不多了,时代在进步,人工智能找这些图片座标还是像爸爸打三岁小孩似的,随便下手。不过这个网站和的是缓存登陆哦,第一次发,您可要自己登
群发软件爱搜网全自动群发工具
爱搜网全自动群发软件 POST 版,这个网站只有两个分类,一个是产品供应分类,一个是资讯分类,产品供应分类的系数是 25 这个可能网站自己也没有关注到问题所在,一般是 21 系数收录才会好,好在资讯这个默认了,对于收录,这些网站都已经被百度蜘蛛给训化了,人家都会按惯性的方式去爬行,如果您想另起一门旗帷,那就只能说抱歉了,您还没有那个实力与之抗争,还不要说,人家现在技术性的业务是比较少的,您想让他改变那种爬行方式
信息发布软件POST 中巴网全自动群发软件
POST 中巴网全自动群发软件,这个是 B2B 网站,不过以前都是做的普通版本,这个是 POST 版本,可以节省电脑很多资源,可以不占用后台,可以后台静默运行,可以飞快的跳过一些错误,可以秒完成发帖过程,自动后台传图片,然后采集图片地址,进行采集保留,再判断里面有哪一些分类,再把分类随机切换,这个标题可以加长的模式,内容也是不被限制的发帖模式,因为是后台运行,他这些限制的都是页面 JS 限制的,不过您要不是网站会员,
群发软件乐扫网 B2B 网站全自动发送软件
乐扫网 B2B 网站全自动发送软件,这个网站也是 B2B 网站来的,有的人总是在迷茫中生活着,总是说找不到网站发,那您就可以弄几个这样的 B2B 网站先把池水动起来呀,为什么一直在纠结那些秒收不秒收的事呢,很多网站前期是沉默的,某天东风将至,收录直接就飞速上升了,这些网站现在都有这种特点,不过他们也不【知】道,现在有很多论坛更是牛,收录比这些快的多,可不是什么 DZ 论坛,而是一些主题论坛,也是这样,某几天收录超级
群发软件记得网 B2B 网站全自动群发软件
记得网 B2B 网站全自动群发软件,这个网站也是 B2B 网站分类来的,他对搜狗收录会比较好,不过谷歌居然也有很高的收录,不【知】道他是走的啥运气了,百度收录差一些了,现在几乎很少人玩这些,不过有收录就有流量肯定的,国内国外都有,网站现在已经做了这种 B2B 网站模板了,全部过程只需要改一个地方,那就是网址列表的网址,您换了网站,只要把域名放进去,全部就会自动的,不管您想发供应,还是产品,还是行情这些分类,软件
群发软件尚格论坛自动发布帖子软件
尚格论坛自动发帖软件,这个只是普通的论坛,但因为先前是地方论坛来的,人气还可以的,收录也不会差到哪去,论坛是用户名登陆的,他一个页面有手机登陆,这个可不是通用的登陆接口,普通登陆是登陆不上的,只能用户名登陆的接口才可以,注册账号的时候要注意,不是手机号码登陆的,注册是手机号码,但是用户名才有效果的,发帖的时候没有验证码,一个账号可以无限的发送。只是发帖时间要十秒以上,不然他可是会出验证码给您按排上
群发软件驴在陌自动发提问文章软件
驴在陌自动发提问软件,这个网站是发旅行日记和路线的,不过日记这里肯定收录的比较好一些的。只是他登陆的地方只能用微信搜码登陆,短信验证码登陆,收录后还是要跑百度蜘蛛池的,不然基本不会有收录量的,发帖还有一个字母的验证码,您还必须写上,不然是不给发帖的,网站间隔时间是三十秒一帖,如果要快就只能加多几个号同时开脚本去发的。内容这里需要用座标的输入方法去整,不然是没有用的,因为他不让源码输入,也不用逐字输
群发软件Apipost网站自动发博客软件
Apipost 网站自动博客发帖软件,这个网站登陆是有一个点触验证码的,不过对软件来说这种验证码已经是最简章的存在了,所以加一个座标点击,就完事了,网站也没有太高的要求,不过发那个博客是五分钟只能发一帖,不然会一直显示发帖太过于频繁,会发不出去的,五分钟一帖,是很折磨的,但软件不会嫌烦,他能自动的切换账号发,可以自动用的缓存登陆发,可以自动动的等分钟发的,完全看您想要方还是圆的,一切都可以调试,没有什么限
群发软件灭提问网自动发提问软件
灭提问网自动发提问软件,这个网站后台会不会有眯怪,不管这么多了,软件可是用来发广告用的,这个网站登录有验证码,发帖也有一个字母的验证码在上面的,所以是要耗钱的,不过这些网站这两年如果找到好的,都是秒收录的存在,比百度自己的产品收录都要好,这是非常神奇的地方,特别是这些提问类的网站,更是牛的不行,边发边秒收,只是每天要发,有一天不发,那收录就全部回到了解放前了,原因可没有人【知】道的事,规律就是这样
群发软件齐鲁信息网站自动发布工具
齐鲁信息网站自动发布工具,这个网站只是一个站群论坛来的,他网站会自动大量地用软件挂 N 多信息,等收录好了就卖账号给别人发布帖子的方式,论坛是比较难做收录的,但一旦能做起来,收录会更好一些,排名也会高,论坛本来就是冲着交流的属性去的,所以百度蛛蜘收录的方式排名也是不一样的,虽然经过了这么多久,但基础框架摆在那里是不可能太多的转变,网站就一个简单的问题验证码,回答对了就可以登陆和发帖,他网站也会有大量
群发软件微软Sway自动生成软件
微软Sway自动生成软件下载, 对于国内来说可能不是很神奇,但在谷歌里可能早已经是大佬级别的存在吧,外国人的东西有很多是很新鲜的玩意儿,但用的人却像是比较高级的,而国内的东西,有一点新鲜的东西就会扎堆在那里玩弄,也不【知】道是价值观的问题,还是因为人的大脑都喜欢没有见过的新鲜玩意儿,这个东东可以生成很多漂亮的新闻稿,像 PPT 类似的。不过外国人这些看上去很多都已经被人工智能给完美替代的主了吧。软件这里是写
群发软件百度文档自动上传 WORD 文件软件
百度文档自动上传 WORD 文件软件,这个网站应该是比较多人弄的,不过弄的都是正规的方式,以前可以弄成审核通过了,放一些外链网址去,可是现在审核通过修改,又要审核了,基本让他堵住了漏洞,不过还是有一些人在上传 WORD 用的,毕竟正规工作的人太多太多需求了,这些文档收录好,还可以赚钱,很多人会贪那点方便下载别人集合好的文档是行调用,特别是一些总结,一些目录,都是别人幸苦劳作的结果,甚至有的是作为小说的宣传地把
群发软件企业录网站分类信息软件
企业录网站分类信息发布软件,这类网站有十年多的历史了吧,还是老网站好,随便发一发就收录,问题是养起这些大胖小子也是不容易的,先前的坚持与无奈,以前可能会觉得是一只吞金兽,现在可是一棵摇钱树了吧,还理啥财,种一棵树最好的时机是十年前,其次是现在,我们努力的规划好了吗,现在人工智能发帖也是这样,找一个 AI 的形象,把自己训练出来,也许可以永生哦,有很多人都是这样想的,把自己所有的思想存到 AI 里,算出来一
群发软件师徒网自动发布提问软件
师徒网自动发布提问软件,这个网站有点像博客,不过他又分出了一个提问版区,所以这里收录会比较好一些,他这个提问区其实是 WP 博客系统弄的,也不【知】道为什么整出这么一个版块出来,他登陆方式,全部都已经美化了,但 WP 博客系统那种选择分类的模型至今没有什么变化,还是老三样,这里发布帖子的时候,他分类是用了固定的方式的,登陆有一个点触验证码,估计是比较简单的鼠标检验,用座标功能点击一下就可以实现自动登陆了。
群发软件大河网B2B软件
大河网全自动群发软件,这个网站是 B2B 网站来的,本来就给您发广告用的,不过他只有发资讯类的,要充多少钱他是可以自动开通的,也算是很方便的一个自助网站了,这类权重比较小的网站,网站主人也是很聪明的,他们会把所有信息发到一个分类,这样可以提高一个分类目标的权重,收录自然会比散弹枪好很多的,只是网站也没有啥快的,很卡屏的感觉吧。不过他这个鬼下拉分类倒是很奇葩,天天会更换,不【知】道要整点啥,所以我这里是
群发软件天天基金头条发布软件
天天基金头条发布软件,天天基金这个可是史上最多有钱人的集散地,网站以前其实是他博客的一个升级版,不过现在头条看上去大气上档次一些吧,也没有太多的限制,只是一个账号一天只能发五帖,首次登陆会有一个点触验证码,不过第二天就会没有,网站是可以缓存登陆的,要是封号了就很完蛋,内容要关于财富之类的内容,不然是会被秒删除的,软件现在是用账号密码登陆,第一次登陆您得手工去输入验证码才让登陆成功,账号密码可以自动
群发软件建设工程网软件群发
建设工程网软件群发,这个网站看上去也是同一批人产品,这类 B2B 网站,如果能收录的,都会出大牛股,如果不能的,那就只能做一个低调的的老百姓了,百度蜘蛛也是一样的得性,看到这类网站开始的时候疯狂追逐,等发现网站内容太过于相似的时候,他又心生讨厌了,只好时不时的远离了,某一天还来给您玩一个空然消失的游戏,让您猜个饱,您是这里生病了,还是那里得病了呢,不过找原因都是徒劳,所有问题都其实出在一个新玩意儿的身
群发软件中国结艺网自动 B2B 网站群发软件
中国结艺网自动 B2B 网站群发软件,这个网站是发布广告的网站,只要有号就可以发,没有验证码,没有审核,有内容和标题都可以导入进去发,其实现在 GPT 这类生成文章,发起来效果会好一些,自己的内容,再加上生成的内容进行发上去,会比插入新闻和小说内容会好一些,只是很多后【知】后觉的人不【知】道怎么生成去用罢了。 结艺网自动 B2B 网站软件下载地址: 随着互联网的普及和电子商务的兴起,B2B(Busin
群发软件当当AdSmart 自动上架货物软件
当当AdSmart 自动上架货物软件, AdSmart依托全球最大中文书店&网上商城当当网,帮助客户进行最有效的市场推广。面向白领,公务员及您可自由选择广告发布类型和目标页面,并可随时修改广告内容和预算。这个软件可以自动批量的上架一些自己的物货,自己只需要输入书本的系列号到软件中去,然后软件会自动按书名,关键字排序,把货物自动把图片,和系列号自动上架上去的一种程序化操作,账号这个分类也是需要自己添加一下的,就是想
群发软件36商务网发布帖子软件
36商务网B2B网站软件,这个网站自然也是 B2B 分类商务网来的,网站是做搜狗搜索的,所以对于这个比较友好一些,只是他们都是 PC 端的,虽然搜狗能秒收,可百度收录也没有多好的效果的,这些网站现在主要是打一个堆量的效果,发的多,收录自然也会上去,发的少的话,自然没有什么好的收录量,不管您发的这种类型网站是大网站或是小网站,没有量一定就是扯皮,没有效果的。只要把量堆下去了,百度蜘蛛多么正人君子,最好也会看在多的
群发软件哔哩哔哩网站专栏群发软件
哔哩哔哩网站自动上传内容图片发布专栏软件,这个网站就是账号比较难求得,一直以来他网站都这种开放模式,收录是现在全网巨好的一份子,现在几乎没有这么开放的网站,有这么高收录量的老大哥,这个脚本可以上传四张图片,其实就是重复的把那几步上传步骤修改一下就可以的,然后分别采集存放到了软件的四个列表,方便插入到内容里,他调用图片必须有一个代码,不然是无法显示图片的,这层里是最麻烦的地方吧,不过专栏不用上传视频
群发软件电梯阁论坛群发工具帖子软件
电梯阁网站全自动发帖子软件下载,电梯阁论坛全自动发帖软件,这个网站看上去会很普通,不过只是一个论坛,但是他是一种技术性论坛,所以秒收录是极高的,特别是他放广告的版块,收录还是比较喜人的,都很多秒收录,看来很多人还是很在乎这些技术性的分享的,虽然现在不正常的人还玩着电脑,正常的人可能早就飞上了哪一个高枝了吧,网站还是这么奇葩的样子,版块多,广告多,收录也居然还被百度蜘蛛给爱上了哈。 电梯阁论坛群发工
群发软件搜狸网站自动发帖软件
搜狸网站自动发帖软件,这个网站是一种注册账号模式发帖的,他和B2B网站类似,但网站没有这么容易即时放开审核。显示中的都是自动审核过的,网站收录的也是搜狗的作用,不过网站是付费形式的,他有会员后台,登陆也会有一个验证码,发帖就一张图片,一个分类,一个标题内容就可以自动发帖成功,没有什么难度的,不过内容这个输入框是嵌套的方式,也就是只能针对他一个网站会有作用,换一个网站这步就得重新做了,好在网站发帖也没
群发软件微页B2B网站发帖软件
微页B2B网站发帖软件,软件市场营销和信息发布时,微页B2B网站发帖软件无疑是一款备受推崇的辅助工具。该软件专为在微页B2B平台进行信息发布与推广而设计,其独特之处在于发帖权限主要面向付费用户开放。这一特性使得微页B2B网站得以有效筛选并确保平台上企业的资质及信息的真实性,从而维护了一个相对纯净且高效率的商业信息发布环境。 微页B2B网站发帖软件下载地址: 发帖过程录像: 微页B2B网站发帖软件作为一项
群发软件图图网文章自动投稿软件
图图网文章自动投稿软件,这个看上去像是一个相册网站,但他其实是一种投稿的网站来的,账号也是付费才会通过审核,并不是免费让您我限发的,网站肯定有点水份才会让您付费,一般这类付费发帖的网站,都可以实现免自己提交蜘蛛池的效果,至于收录结果,完全是看您自己的标题内容的质量说话的,再加上网站的权重高,那收录可能超好,要是没有达到蜘蛛池的要求,那收录就像打水漂似的差劲的,发这类网站,最好的方式是自己复制当天秒
群发软件喜马拉雅自动评论软件
喜马拉雅自动评论软件,这个网站可以发听歌单的,不【知】道为什么大家都不动合,不过今天刚好有人要弄一个评论,他说收录更秒吓人,他是先采集最新的听单,然后采集多少页,再进行听单逐个评论,由于是最新的听单,所以评论都几乎在第一页呈现,如果提交给百度蜘蛛池,很快就秒收录了,这些网站PV非常高,几乎是人气最大的地方,他们拥有的宝藏是值得开发的,如果你的号是VIP号,评论几乎是秒出来,他是利用听单的评论收录,所以
群发软件亿图脑图账号注册个人主页中心页宣传方案
亿图脑图账号注册个人主页中心页宣传方案,这个网站是注册账号进行主页宣传的,这个网站是AI脑图生成的,非常聚人气,所以收录一直很好,他个性签名可以输入标题和内容,内容是二百个字,超过了就输入不了,提交不成功,最好是自己算好字数导入,特别是有一些特殊符号的,这种网站是要跑蜘蛛池的,不跑基本很难收录,不过一旦收录,会一直存在上面,很划算的,排名也很高,不过这个网站也有一个毛病,他要在个人主页里点注册,如果
群发软件17173社区发帖软件
17173社区发帖软件,游戏社区一直是秒收录的地方,像这些大IP超级最多人玩的PV地,肯定都是秒收录的高级地区,这个脚本是自动在剑侠社区发帖的,社区可以自己更换,也可以自己选择分类,不过现在收录最好的就是这么几个社区地了,虽然他是三级域名,但17173的名头还在的,社区里最多人的地方,就是在这里了,社区很多人流的地方,不过这个一个账号发帖会有限制,软件是利用缓存CK进行写入的,没有做登陆步骤,因为他登陆有验证码,
信息发布软件知识辰星网站动态群发软件
知识辰星网站动态群发软件,这个网站和以前的动态微博类似的网站,他是没有太大的区别的,不过他网站一会放开注册发帖,一会又限制,让人摸不着头脑,网站放开的时候就像是洪水一样带来N多的收录,发帖多的人自然知道怎么弄内容可以收录,以不弄弄某些内容不会收录的,如果不明白这点,是极度百万剧的存在,因为你根本就没有吸取前面的经验,只是有盲目从众的干活,是得不出好的结果的,做很多事情既要低头拉车,也要抬头看路,知
群发软件720云网站自动创建场景软件
720云网站自动创建场景软件,这个网站是做全景VR影像类似的,发现他们居然可以把这个链接做为宣传的地方,不过只能五十个字完工,也就是标题这里输入五十个字左右,脚本里做了限制五十个字,太长会被K掉,用的是他的素材库,网站没有什么太大的限制,封号也是看运气的,只是网站不能用缓存登陆,他那个验证码是会动来动云的,传到网站打码会有一点差别的,基本是手工打码一个号就可以一直发,没有什么限制,素材用啥都可以,网站权
群发软件QQ 音乐歌单全自动群发软件
QQ 音乐歌单是一个比较低成本的宣传方式,软件先是通过 QQ 登陆歌单页面,然后往了老面的发标题和简介进行宣传,音乐视频小说站可以说是最容易收录的地方了,比其它的限制还少,现在主力位往往很少关注这些,这也是给广告提供了位置的空缺地带,这个脚本可以采集缓存,然后写入缓存进行账号切换着发,这样是很简单的操作了,有的收录了,连评论都成了权重地,因为这些跑跑蜘蛛池极容易变成一个收录地带圈,这也是因为 腾讯这些默认
群发软件晋江小说网站书单软件
晋江小说网站书单软件,最近看书的书单很火暴收录,因为他们书单可以任意的发,可以让他网站小说的PV直接升级收录,一般来说他们PV高的网站都是秒收录的存在,只是他们没有太多的外在链接,全部是靠自身的小说网站进行的,只不过这些网站比较难找到,特别是这个网站,他的书单是在很多很多公告最底下的,不认真看居然不【知】道他的存在,居然他存在就会有一个好的收录量了,只要找到书单的网址,然后提交书单,都可以有一个好的收
群发软件洋溪信息港自动发布软件
洋溪信息港自动提问软件,这个网站有点像论坛,但他其实手机网址里发提问才有收录,其它收录比较差劲,而且这个已经很久了,以前一直不让发的,最近又恢复了可以发帖,故此做一个脚本进行发提问,发成功后可以直接采集网址,自然收录也可以,丢蜘蛛池也是可以的,网站效果还是很别具风格的,就是账号都是手机验证码注册,好在他网站提问账号可以疯狂刷,没有验证码发帖,只要放进去账号密码,软件就可以自动登陆,自动的发帖,没有
群发软件百度贴吧视频上传软件
百度贴吧视频上传软件,百度贴吧消费了这么多年,仍然是最大的社区,也算是难得了吧,他的规则时严时松,给做广告的人都有了一定的空间,这个网站虽然严格,全部都是机器人审核的,但也因为这样才有操作的空间,有的时候某些BUG是层出不穷的,有时候是同音字的天下,有时候是视频上传的天下,有时候是图片动态的天下,各有千秋,好不热闹的样子,这个脚本是自动上传视频的,只要号是正常都可以上传成功,主要是没有验证码,省一笔R
信息发布软件Moloney网站自动发帖软件
moloney网站软件,这个网站只能发提问的一个后台,因为网站是品牌比较在的网站,可能架构是有问题的,不过网站发帖一个号可以发很多帖子,帖子发完要在个人中心才能把帖采集回来,发的很快也无所谓,网站不理这些事,提问这个发成功他是按里面分类进行帖子排列的,你发哪一个分类就要专进哪一个版块去采集个人帖子网址,这样丢蜘蛛池才会有效果,百度自然收录这些网站基本是不能的,因为网站权重比较低的,只能靠外力去抓取,上星
群发软件三一办公网站自动注册账号宣传主页软件
三一办公网站自动注册账号宣传主页软件,这个网站都是下载PPT的一个网站,这些网站收录量都极大,随随便便一个就有几百万的收录量,也不【知】道他们好在哪,可能现在做老师的还会在这些网站下载资料吧,他们也不得不弄这些PPT上课玩,生活所迫,都有不容易的,下载这些PPT也是乘着以前的流量做大做强了许多,现在可能都在用手机在做PPT了吧,不过聪明点老师们可能还在用传统的电脑在做这些PPT,不然他们以前买的电脑不也是成了废
群发软件面圈网站自动发帖工具
面圈网站发提问软件,这个网站是一个综合性网站,但似乎可以发提问作为广告,以前不可以注册账号,最近又恢复了可以注册了,注册需要手机验证码才可以发,他发帖也没有多少限制,基本就是登陆一个号,就可以一直发提问,不过内容输入框有点麻烦,软件这里是用点击一下,复制所有列表要发的内容,然后粘帖进去的,完美的解决,不过这样也有点问题就是会占用打字的粘帖板哈,这样就只能独立让他运行了,不然会窜行的,发帖的时候还要
群发软件腾讯兔小巢软件
腾讯兔小巢自动创建产品软件,这个创建产品有点像微信里的小程序,他是一个小组讨论类似的,这个网站账号也是比较多人买的,都是微信搜码登陆,然后自动登陆上的意思,不管是发帖,还是创建产品都会有一个腾讯的验证码,现在随着人工智能的来到,这些验证码几乎就是小菜一碟了,没有啥难度,三下五除二就可以破解好,并且可以给您建一个强大的识别库了,现在打码平台也很多看到了这种机遇,只要跑一跑几天,就可以把一个识别库给整
群发软件17推论坛专用发帖软件
17推论坛是一个站长论的网站,以前很火的,现在也还是让别人发一发软文,发一发外链作为网站的赚钱点了,很多不愿意去尝试新的东西的网站都还守着这一亩三分地,当然在不断变化的时候,这也没有什么所谓对与错,只是他们选择是这样,没有了那种多大心去办多大的事,只有剩下这点能量,再去发火挥自己应该有的光和能罢了,有时候坚持自己能车范围的事,比说什么大道理还要有用,出击着各种各样的新市场,守着自己的成功之作,发光也
群发软件西瓜视频软件
西瓜创作平台视频自动上传软件,这个网站其实是抖音的子公司,也是借助他的力量做大的,但西瓜视频他主要着重点是网页的东东,不过也因为太多太杂的原因,他网站收录的就比较快,视频网站别的不了解,但收录是最好的,没有之一,现在他改版成只能上传视频,输入标题,上传封面图片,我们可以弄关键字,然后把视频封面上下功夫,其它是不让填写的,没有简介的了,以前是有的,现在已经全部改版了,软件是可以发一帖切换一个账号,切
群发软件汕头大学论坛自动群发工具
这些个论坛是精简单的,不过人家做的久一些,所以有一定的流量,以前这些论坛是满大街的到处都是,还整了各种各样的验证码,现在简单了,只要您有号就给发帖,可以说是白送的,因为这些论坛想活下去,就必须卖点账号,必须拼一拼到最后一口气,直到没有了,才会消失,很多以前很多人的社区都是想赚最后一个铜板,都想来赚赚钱,然后再关闭,服务器什么时候到期都不会再去续费玩了,不过最后收录还是很好的,以前您可能都没有发现自
群发软件免费现成的蜘蛛池软件下载
最近这个免费的蜘蛛池相当火暴,就里面发链接的人就有几千万条,可以说是一个免费又有特别大效果的汇集地,他网站也是一个怨大头,服务器也居然能带的动,还一直在公告,是一个相当厉害的网站池子,因为它也是帮了别人发外链,这么多人汇集到这里,也成了一个别人助力PV超级高的网站,虽然也可能有巧合的味道在里面,但也算是一个不大不小的好去处,这个是织梦的系统,只要他没有关留言板块,那就可能把百度蜘蛛困在里面出不来,非
群发软件网站搜索留关键字网址软件
搜索留迹软件,很多网站都可以搜索留下自己的足迹然后被百度自动的收录进去,百度蜘蛛本质上就对这个极度爱好,如果他被某个时段屏了,那也只是一时兴起,过不了多长时间,他就会放出更多的网站出来,他自己搜索引擎的代码天然就喜欢这些搜索结果拆取,配合自己的池子,就可以秒收录极多的关键字和页面,而且还不要说啥,他这些搜索出来有效果的页面,会形成一种虹吸的效应,会越收录越多的摆在上面,直到被很多人举报后,他才会消
群发软件手机微信读书自动建书单软件
手机微信读书自动建书单软件,这是一个手机雷电模拟器运行的脚本,这个脚本需要自己登陆好微信账号,然后软件会进去自动创建书单,这个网站收录非常牛的,毕竟是腾讯这个老大头的家伙,只要是他旗下的网址,收录自然不会差的,软件每一次都是进去创建书单后关闭APP,电脑可以多台手机上运行,但要自己全部号登陆好,不然是创建不了书单的,电脑差的是无法运行这些脚本的,网址收集会比较麻烦一些,像什么之类书单的网站是只能填写
群发软件玩玩页游网发布宣传软件
玩玩页游网自动顶帖软件,这个网站并不让一直发帖的,可是流量不是一般的好,因为他是S服网站专用的,这里的用户群的人都比较固定,也是只是玩玩游戏的人群居多的,宣传游戏的人往往都喜欢往这里收藏起来固定的用,现在和以前不同了吧,以前都要下载什么几十G硬盘存量,现在基本是打开网页就可以玩,您也搞不清楚哪一个是正规的,哪一个是开源的了吧,这个网站主要是S服主用的多,他们发一些帖子,然后用软件顶起首页的比较多一些
群发软件360图书馆软件自动群发工具
360图书馆软件群发,这个网站最大的特点就是登陆改来改去,也是很神经的地方,你说你这个没落的图书收藏夹,天天和一个登陆过不去做啥呢,还不如多方便一下别人,多做一些收录不香吗,非要改来改去的,这次也一样,又把输入密码改成检验了,现在输主密码后,必须要点击一下输入框,不然可会被说没有输入密码的,软件也只好输入账号密码后,加一个座标点击去吧,这样也让网站心满意足的做他的事了,他网站这个发帖,可不是随随便便
群发软件Adobe网站自动智能字体生成软件
Adobe网站自动智能字体生成软件,adobe官网是有一个功能的,就是批量的将一些字体生成一种特别的东东,比如让字体嵌入一个小羊,让一行字变成一生成式 AI 是一种人工智能,通过学习现有数据来创建新数据,例如图像或文本。它能够根据您的描述,高效地进行可视化并生成与描述相符的内容,帮助您创造、探索和突破界限,为发挥想象力、进行实验和将想法变为现实而开辟全新的途径。Adobe Firefly 是一个生成式 AI 模型系列,用于提高 A
群发软件2024微博头条软件群发
2024微博头条软件群发,现在微博头条缓存是有变化的,他需要访问一下他的主页,缓存才能写入微博里面去,虽然有所不同,但其它动作没有太大的变化,现在他验证码也是有变化的,这个脚本针对这种验证码,加上了拖动滑动的〖逻辑〗判断,有了这种验证码,会自动转入这种操作去,不过他验证码变的是比较积极的,所以以前的动作也不能删除,他自动有一个判断,以后再改就容易许多,微博头条这里,其实也是可以用临时缓存了现在,只要不
群发软件win10网站论坛自动发帖工具
win10网站论坛自动发帖工具,这个网站是一种系统论坛的模式,能活到现在也是他们太强了,种种微软的原因吧,他们现在只是在收点服务器的RMB了,也是没有多大的发展空间了吧,这个网站是网站主也是连HTML功能在哪里开的主,他自己还不【知】道自己没有打开这个开关,所谓让您来发这个网站外链,其实就是一个笑话罢了,好在经一番折腾后,网站终于可以用来发外链了,也解决了他这些未【知】事件吧,正所谓踩在时代的风口上猪都会升到
群发软件58同城自动发布帖子软件
58同城自动发布帖子软件,58同城一个不变的宣传地方,他们操作还是这么麻烦,登陆给安排验证码,发帖发多了给您安排验证码,这是他们一直以为的通病,用户体验极度的差,不过收录还是比较喜人的,因为他们也自带流量,如果不收录,那也会有一定的转化率的,毕竟背靠大树,春暖花开吧。这个网站您如果不是本地登陆账号,那会出验证码,只要在本地电脑登陆的账号,一般不会出码,要是一直出码,只好用缓存去整了,现在是账号密码登陆
群发软件稀土头条网站自动群发软件
稀土头条网站自动群发软件,这个网站是一种头条的网站来的,他这个编辑器是最让人讨厌的怪东东,您不管怎么样输入,他都不给显示输入多少了字数窜,不过还好,软件有输入粘帖功能,这次也是功不可没的,只要把需要输入的内容写入到粘帖板里然后输入框里点击一下,再利用复制功能,就可以对内容进行输入,他网站真爱这种操作,不过这种内容可不能在内容里放模名其妙的东东,比如一些图片啥的,他这个可能只能用POST去发图片,不然可
群发软件搜狐视频发布软件
搜狐视频发布软件,这个网站也有一个视频上传的功能,估计很少人会观察到吧,不过也难怪咱们,因为他出名率太低了,审核的人也特别懒,网站也不想再投入技术去更新他们平台的了,先前因为站长的平台,他本想转型,可是发现没有什么收益,他也没有再做下去了,不过这个视频还是用了AI技术进行审核了,如果内容比较正规一点,还是可以通过的,只是时间比较久,他们又比较懒的节奏吧,这个脚本是用缓存登陆,然后自动上传视频的,如果
群发软件培训通问答和培训通讯息自动发布软件
培训通问答和培训通讯息自动发布软件,这个脚本以前就弄过很多次了,我记得先前用万能去那苦哈哈的场景,让人其很无语,他这个分类是一种网页嵌套进去的,极其搞笑的操作,您看有几个网站会把网页分类定义成一个单独的网页的,可这个网就是这么奇怪的想法,不过现在全部都是用POST发布的,根本不管它嵌套了几个网页,完全无所谓,软件一键就可以把分类代码全部采到软件的列表中去,而其它难度几乎是没有的,虽然网站现在还是老态龙
群发软件兔小巢网站自动发帖软件
兔小巢自动发帖软件,这个网站是昨天那种缓存号登陆进行发帖的,他是一个极其隐秘的地方,不论是百度还是这个QQ的领地,都有大量的这类网站存在的,因为他们需要用户和技术交流,并提交BUG让他们公测,这个网站这里是利用缓存进行登陆,然后开版块,提交这些想法,或是提交BUG的地方进行的,百度这个蜘蛛也是非常敏感的,居然也会闻风而动,这也是它一直在做亮眼的地方,发帖没有验证码,但是会封号,一旦被发现了啥,就会被直接删
群发软件兔小巢注册账号软件
兔小巢注册账号软件,这个网站发帖很多只是账号的问题,账号能发多少帖子,就可以放进去发我钞,所以账号对于这个网站还是比较重要的,他这个搜码也比较特别,让人不【知】道如何下手才行,不过绑定手机也是一个重要步骤,这个脚本就是利用手机平台,绑定一下临时缓存绑定手机号码的步骤,这个收码会有一点慢,他不像别的网站可以秒收录,他要二十秒以上才有一个好的收信息时间,只要收一次验证码,就可以登陆上发帖,就可以保留永
群发软件留搜索痕迹网站集合软件
留搜索痕迹网站集合软件,前段时间查姓名吉凶和手机号吉凶的网站,让他们狂刷了一把,发现收录还真是不错,这几天看看又有几个查车牌号码,和几个搜索网站留迹象的网站收录一样不错,他们这些相当于时效性的网站,有几个只能输入关键字,然后点查询才会给一个新的网址,无法做到直接访问网就给你一个新的关键字加手机号码的宣传目标网址,他这些网站全部只是要丢蜘蛛池才会有好的效果的,网站这些有的做了逻辑判断,需要加输入和点
群发软件爱奇艺发视频软件
爱奇艺发视频软件,全自动上传视频软件是收录比较多的,他可不需要百度去收录,而是会在 APP 视频自动会有 N 大的流量,那些短视频平台,几乎都是靠用户去生产流量,不过现在上传正规视频比较多一些的,联系方式是比较难发上去的,发这种地方主要是靠号多,他自带流量,再也不用去看百度蜘蛛的眼色而活着了,他们只要通过审核,流量都不会差到哪去,昨少也有几百的流量在这里流出流入的作用,现在名称比较难填写联系方式,存量的都
群发软件搜狐号用 POST 发布文章软件
搜狐号文章 POST 版发布软件,这个网站可以用 POST 发帖,因为他网站编辑器的原因,也是老旧的不得了,网站肯定也是没有多大的财力再去更新的背气活儿,没有技术的支持,这些网站几乎成了失宠的儿女似的,被丢在角落,食之无味,丢之可惜的社会地位里,不过网站流量应该也不会这么快缺失归零的,他们还是收录的大 IP 所在,网站头条现在管的也没有那么严格了,可能是因为流量投入的太少了吧,这个网站这里发帖,其实就是以前的搜狐
群发软件女人私房话分类信息网发帖软件
女人私房话分类信息网发帖软件,这个网站其实是更改了后台的,以前我们也做过这个网站的,只是后台的形式可不像现在这样子的,这样的网站中途转了系统的,后期是很难收录成功转变的,但由于这个网站先前权重是比较大的,导致他还是能接回收录的台子,继续发展下去的,这个网站现在采用了分类信息网这样的形式进行展示帖子,私人私房话这个网站他收录是比较好的存在了,不过发帖账号都需要买套餐,和列表网站一样,可以自主充值就可
群发软件网易号视频全自动群发工具
网易号视频上传软件,网易号现在比以前好多了,至少可以上传视频了中写入缓存了,而且开始发的时候没有验证码,只是发到一定量之后才会有要输入验证码,他发送的时候也不像以前那样,这个那个都要填的,好像高高在上的样子似的,现在应简尽简了,毕竟现在很多视频网站推的是简单应用,像BIBI这些网站反而受到了最大的关注,网易视频头条流量当然没有他们出名,不过他也是在边边角角有一席之地的,正所谓人家瘦死的骆驼也比您这条马
群发软件乐乎网站注册账号软件
乐乎网站注册账号软件,这个网站其实是网易平台,他注册账号和网易却又并不能通用登陆,除非您是在那个网易通行证里登陆的,就可以在这边跳转,不过网易通行证都称为最麻烦的地方,因为有二三种验证码等着您去弄的,极度麻烦的在那里玩着呢。这个乐乎发的人应该是最多的,网易旗下的就没有弱智的网站吧,乐乎这个网站收录是N快的,就算他不记录总发帖数量,也是可以达到秒收录的效果,所以旗下的账号更是非常抢手的存在,网站注册

QQ|( 京ICP备09078825号 )

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

GMT+8, 2024-3-29 21:43 , Processed in 0.271980 second(s), 45 queries .

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

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